Ошибка (объект datetime.datetime не имеет атрибута split) в django 1.11.4

Я изучаю Django версии 1.11.4 через учебник по официальной документации. Я использую python 3.6.5 и mysql8 для базы данных. Я также использую mysql.connector.django для подключения к базе данных mysql. Я попытался сделать первое приложение Django, часть 2.

Это ссылка на пример, который я использовал

все работает нормально, кроме случаев, когда я запускаю эту команду:

Question.objects.all ()

Я получил следующую ошибку:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/query.py", line 226, in __repr__
    data = list(self[:REPR_OUTPUT_SIZE + 1])
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/query.py", line 250, in __iter__
    self._fetch_all()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/query.py", line 1118, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/query.py", line 62, in __iter__
    for row in compiler.results_iter(results):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 839, in results_iter
    for rows in results:
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1284, in cursor_iter
    sentinel):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1283, in <lambda>
    for rows in iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)),
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/utils.py", line 101, in inner
    return func(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mysql/connector/cursor_cext.py", line 510, in fetchmany
    rows.extend(self._cnx.get_rows(size))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mysql/connector/connection_cext.py", line 275, in get_rows
    row[i])
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mysql/connector/conversion.py", line 205, in to_python
    return self._cache_field_types[vtype[1]](value, vtype)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mysql/connector/django/base.py", line 119, in _DATETIME_to_python
    dt = MySQLConverter._DATETIME_to_python(self, value)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mysql/connector/conversion.py", line 506, in _DATETIME_to_python
    (date_, time_) = value.split(b' ')
AttributeError: 'datetime.datetime' object has no attribute 'split'

код, используемый в файле моделей:

import datetime

from django.db import models

from django.utils import timezone

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - 
        datetime.timedelta(days=1)

    def __str__(self):
        return self.question_text



class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
    return self.choice_text

настройка базы данных:

DATABASES = {
    'default': {
        'NAME': 'mysite',
        'ENGINE': 'mysql.connector.django',
        'USER': 'root',
        'PASSWORD': '********',
        'OPTIONS': {
          'autocommit': True,
        },
    }
}

Любая подсказка или помощь для исправления этой ошибки будут оценены.

4 ответа

Несколько часов я пытался настроить свой проект Django на python3, используя MySQL DB на MacOS. Я не смог установить ни mysqlclient, ни MySQL-Python с помощью pip3 в виртуальной среде, созданной с помощью virtualenv

ошибка трассировки стека была: что-то не так из-за configparser в python3

Jans-MacBook-Pro:~ jan$ /Library/Frameworks/Python.framework/Versions/3.3/bin/pip-3.3 install MySQL-python
Downloading/unpacking MySQL-python
Running setup.py egg_info for package MySQL-python
Traceback (most recent call last):
  File "<string>", line 16, in <module>
  File "/var/folders/lf/myf7bjr57_jg7_5c4014bh640000gn/T/pip-build/MySQL-python/setup.py", line 14, in <module>
    from setup_posix import get_config
  File "./setup_posix.py", line 2, in <module>
    from ConfigParser import SafeConfigParser
ImportError: No module named 'ConfigParser'
Complete output from command python setup.py egg_info:
Traceback (most recent call last):

File "<string>", line 16, in <module>

File "/var/folders/lf/myf7bjr57_jg7_5c4014bh640000gn/T/pip-build/MySQL-python/setup.py", line 14, in <module>

from setup_posix import get_config

File "./setup_posix.py", line 2, in <module>

from ConfigParser import SafeConfigParser

ImportError: No module named 'ConfigParser'

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /var/folders/lf/myf7bjr57_jg7_5c4014bh640000gn/T/pip-build/MySQL-python
Storing complete log in /Users/jan/.pip/pip.log
Jans-MacBook-Pro:~ jan$ 

Теперь РЕШЕНИЕ, которое работало для меня, было

1) снова установить mysql с brew

brew install mysql

2) обновление mysql с помощью brew до последней версии (если требуется)

brew upgrade mysql

3) установка mysqlclient с помощью pip3 (глобальная установка без virtualenv)

pip3 install mysqlclient

4) Теперь получите доступ к virtualenv и установите в него mysqlclient, он установится нормально, без ошибок для configparser

Как видно из сообщения об ошибке, опубликованного @Alasdair, решение:

Задавать use_pure=True в DATABASES['default']['OPTIONS'],

Это проблема преобразования данных mysql-connector-python. Вы можете обойти это, установив параметр опций базы данных с помощью use_pure=true. Эта проблема не исправлена ​​в текущей версии 8.0.11,8.0.12 и 8.0.13.

"OPTIONS":{
 "use_pure":True
}

Это всего лишь временное решение. Обратитесь сюда для получения дополнительной информации: https://bugs.mysql.com/bug.php?id=90541

Я тоже прошел через эту боль вчера или 2 дня назад и смог запустить ее с помощью mysqlclient-1.3.12. Я ухожу из памяти здесь, так что терпите меня, я перепробовал много вещей, но в конце концов я заставил это работать.

Я установил mysql8 и mysql8connector с веб-сайта mysql, как и вы, но не получил любви. После долгих поисков и проб и ошибок я где-то нашел ответ, к которому не могу найти дорогу, но в итоге я сделал:

brew install mysql pip install mysqlclient

Я знаю, что у вас уже установлен mysql, но brew install mysql добавляет клиентские библиотеки, которые используются для компиляции соединителя mysqlclient. Тогда моя база данных в моем файле настроек выглядит так:

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'polls', 'USER': 'myuser', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'charset': 'utf8mb4', 'autocommit': True, }, } }

Обратите внимание, что ДВИГАТЕЛЬ отличается. Я могу повторить вашу точную ошибку, если я изменю свой ДВИГАТЕЛЬ на mysql.connector.django.

Тем не менее, используя django.db.backends.mysql, я все равно получаю следующее предупреждение:

lib / python3.6 / site-packages / django / db / backends / mysql / base.py: 71: Предупреждение: (3719, "utf8" в настоящее время является псевдонимом для набора символов UTF8MB3, который будет заменен на UTF8MB4 в будущий выпуск. Пожалуйста, рассмотрите возможность использования UTF8MB4, чтобы быть однозначным. "

что я не могу понять, но поскольку это только предупреждение, учебник по Django, кажется, работает нормально.

Дайте мне знать, если это поможет или у вас есть другие вопросы, и я сделаю все возможное, чтобы помочь.

Другие вопросы по тегам