Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 19.06.2020
Сообщений: 37

TypeError: expected string or bytes-like object (При добавлении в БД Django)

11.06.2021, 19:09. Показов 8109. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
        def get_content(response):
            html = response.json()[0]['content']
            soup = BeautifulSoup(html, 'html.parser')
            countres = soup.find_all('div', class_='category-container')
 
            marathon = []
            for countre in countres:
                for championship in countre.find_all('a', class_='category-label-link'):
                    for team in countre.find_all('div', class_='bg coupon-row'):
                        marathon.append({
                            'date': team.find('td', class_='date').text.split(),
                            'name_championship': championship.text,
                            'name_teams': team.attrs['data-event-name'],
                            'p1': team.find('td', {'data-market-type': 'RESULT'}).text.split(),
                            'X': team.find('td', {'data-market-type': 'RESULT'}).find_next('td', {
                                'data-market-type': 'RESULT'}).text.split(),
                            'p2': team.find('td', {'data-market-type': 'RESULT'}).find_next('td', {
                                'data-market-type': 'RESULT'}).find_next('td',
                                                                         {'data-market-type': 'RESULT'}).text.split(),
                            'x1': team.find('td', {'data-market-type': 'DOUBLE_CHANCE'}).text.split(),
                            '12': team.find('td', {'data-market-type': 'DOUBLE_CHANCE'}).find_next('td', {
                                'data-market-type': 'DOUBLE_CHANCE'}).text.split(),
                            'x2': team.find('td', {'data-market-type': 'DOUBLE_CHANCE'}).find_next('td', {
                                'data-market-type': 'DOUBLE_CHANCE'}).find_next('td', {
                                'data-market-type': 'DOUBLE_CHANCE'}).text.split(),
                        })
            return marathon
 
        def main():
            for i in range(100):
                print(f'парсинг {i} страницы.....')
                URL = 'https://www.marathonbet.ru/su/betting/11?periodGroupAllEvents=24&page=' + str(
                    i) + '&pageAction=getPage&_=1604928938537'
                html = get_html(URL)
                content = get_content(html)
                Bet(date=content[i]['date'], title=content[i]['name_championship'], name_command=content[i]['name_teams'], score='roma', p1=content[i]['p1'], X=content[i]['X'], p2=content[i]['p2'], X1=content[i]['x1'], par12=content[i]['12'], X2=content[i]['x2']).save()
                if content == []:
                    print('Закончен')
                    break
 
        main()
Итак, объясняю, вообщем это парсер(кусок кода с URL HEADERS и REQUESTS не вставил). Он парсит сайт marathon, и берёт те элементы, которые есть в списке MARATHON. Вы спросите, а как это связано с Django, дело в том что он должен результаты вставлять в БД Django. И вот когда я хочу это сделать:
Python
1
Bet(date=content[i]['date'], title=content[i]['name_championship'], name_command=content[i]['name_teams'], score='roma', p1=content[i]['p1'], X=content[i]['X'], p2=content[i]['p2'], X1=content[i]['x1'], par12=content[i]['12'], X2=content[i]['x2']).save()
Мне выводит ошибку: TypeError: expected string or bytes-like object
Если что модель импортирована, всё нужное импортировано.

Для удобства вот кусок кода с моделями:
Python
1
2
3
4
5
6
7
8
9
10
11
class Bet(models.Model):
    date = models.DateField('Дата', null=True)
    title = models.CharField('Название чемпионата', null=True, max_length=250)
    name_command = models.CharField('Название команды', null=True, max_length=250)
    score = models.CharField('Cчёт', null=True, max_length=250)
    p1 = models.CharField('P1', null=True, max_length=250)
    X = models.CharField('X', null=True, max_length=250)
    p2 = models.CharField('P2', null=True, max_length=250)
    X1 = models.CharField('X1', null=True, max_length=250)
    par12 = models.CharField('12', null=True, max_length=250)
    X2 = models.CharField('X2', null=True, max_length=250)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2021, 19:09
Ответы с готовыми решениями:

TypeError: expected string or bytes-like object
Привет, в универе задали сделать сравнение алгоритмов сортировки и прикрутить к этому всему экселевскую табличку со знанчениями и прочим(1...

TypeError: expected str, bytes or os.PathLike object, not _io.BytesIO
Помогите ошибка Traceback (most recent call last): File "python100new.py", line 43, in <module> File "hooman\hooman.py",...

Ошибка TypeError: expected str, bytes or os.PathLike object, not list
В попытках выучить питон добрался до архивов файлов. Хотел сделать что-то вроде автоматического архиватора, который бы создавал архив с...

6
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
11.06.2021, 21:52
Цитата Сообщение от Gars123 Посмотреть сообщение
Мне выводит ошибку: TypeError: expected string or bytes-like object
Если что модель импортирована, всё нужное импортировано.
а ты точно прочел ошибку? тут не про импорты)
давай ошибку целиком, там должно быть указано что конкретно не так
1
0 / 0 / 0
Регистрация: 19.06.2020
Сообщений: 37
12.06.2021, 16:14  [ТС]
Вообщем всё поменялось, теперь я исправил код в парсере(убрал лишний список, теперь все вот эти элементы в 1 словаре.) и всё равно выводит эту же ошибку Ужас.... Но код парсера работает, через принт выводит любой элемент словаря, а ошибка появляется когда я пытаюсь загрузить данные из словаря в БД Django.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\core\management\__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\core\management\base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\core\management\base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\WebBet\bet\management\commands\main.py", line 72, in handle
    main()
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\WebBet\bet\management\commands\main.py", line 70, in main
    Bet(date=slovar[m]['date'], title=slovar[m]['name_championship'], name_command=slovar[m]['name_teams'], score='roma', p1=slovar[m]['p1'], X=slovar[m]['X'], p2=slo
var[m]['p2'], X1=slovar[m]['x1'], par12=slovar[m]['12'], X2=slovar[m]['x2']).save()
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\base.py", line 726, in save
    self.save_base(using=using, force_insert=force_insert,
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\base.py", line 763, in save_base
    updated = self._save_table(
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\base.py", line 868, in _save_table
    results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\base.py", line 906, in _do_insert
    return manager._insert(
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\query.py", line 1270, in _insert
    return query.get_compiler(using=using).execute_sql(returning_fields)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1415, in execute_sql
    for sql, params in self.as_sql():
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1358, in as_sql
    value_rows = [
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1359, in <listcomp>
    [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1359, in <listcomp>
    [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1300, in prepare_value
    value = field.get_db_prep_save(value, connection=self.connection)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\fields\__init__.py", line 842, in get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\fields\__init__.py", line 1271, in get_db_prep_value
    value = self.get_prep_value(value)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\fields\__init__.py", line 1266, in get_prep_value
    return self.to_python(value)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\db\models\fields\__init__.py", line 1228, in to_python
    parsed = parse_date(value)
  File "C:\Usersоктор-Эксперт\PycharmProjects\WebBet\venv\lib\site-packages\django\utils\dateparse.py", line 75, in parse_date
    match = date_re.match(value)
TypeError: expected string or bytes-like object
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
12.06.2021, 16:27
Лучший ответ Сообщение было отмечено Gars123 как решение

Решение

Цитата Сообщение от Gars123 Посмотреть сообщение
slovar[m]['date']
там точно дата в виде строки?
1
0 / 0 / 0
Регистрация: 19.06.2020
Сообщений: 37
12.06.2021, 16:53  [ТС]
Спасибоооо, вы мне подали идею всё сделать в виде строки Код заработал!
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
12.06.2021, 16:56
Цитата Сообщение от Gars123 Посмотреть сообщение
подали идею всё сделать в виде строки
я?))) вот же интепретатор писал вам несколько раз выше)
0
0 / 0 / 0
Регистрация: 19.06.2020
Сообщений: 37
12.06.2021, 19:02  [ТС]
Интерпретатор какой-то странный много ошибок выдал, я сразу не понял, засыпался. А вы написали: "там точно дата в виде строки?", значит надо сделать всё в виде строки. И да ответ на ваш вопрос: 'Нет, дата с цифрами'.
Огромная благодарность вам, какой раз уже спасаете мне жизнь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.06.2021, 19:02
Помогаю со студенческими работами здесь

Возникло исключение: TypeError expected str, bytes or os.PathLike object, not _io.TextIOWrapper
Ошибка Возникло исключение: TypeError expected str, bytes or os.PathLike object, not _io.TextIOWrapper File...

TypeError: cannot use a string pattern on a bytes-like object
#!/usr/bin env python import subprocess import optparse import re def get_arguments(): parser = optparse.OptionParser()...

TypeError: int() argument must be a string, a bytes-like object or a number, not 'User'
Решил добавить блогу автора комментария, но когда ввожу сам комментарий выдаёт ошибку TypeError: int() argument must be a string, a...

TypeError: int() argument must be a string, a bytes-like object or a real number, not 'Category'
Добрый день! Занимаюсь по видео selfedu и возникла следующая ошибка Environment: Request Method: GET Request URL:...

TypeError: int() argument must be a string, a bytes-like object or a real number, not 'list'
Есть у меня цикл, который определяет скорость всех подключенных мпользователей в списке: for player in players: x =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru