#30224: Mysql Datetime value is string instead of datetime object
-----------------------------------------+------------------------
               Reporter:  upMKuhn        |          Owner:  nobody
                   Type:  Uncategorized  |         Status:  new
              Component:  Uncategorized  |        Version:  2.2
               Severity:  Normal         |       Keywords:  Mysql
           Triage Stage:  Unreviewed     |      Has patch:  0
    Needs documentation:  0              |    Needs tests:  0
Patch needs improvement:  0              |  Easy pickings:  0
                  UI/UX:  0              |
-----------------------------------------+------------------------
 **The Problem**
 Datetimes are sometimes returned as objects or strings. It depends on the
 value. E.g. '2019-03-01 00:00:00.000000' is returned as a string,
 while`2018-12-12 22:02:53.134000` is provided as a datetime object in the
 sql/compiler.py.

 **My Table**
 >
 > CREATE TABLE `myTable` (
 >   `id` char(32) COLLATE utf8mb4_unicode_ci NOT NULL,
 >   `created_on` datetime(6) NOT NULL,
 >   `modified_on` datetime(6) NOT NULL,
 >   `first_spot_broadcast` datetime(6) DEFAULT NULL,
 >   `expiry_date` datetime(6) DEFAULT NULL
 > )

 DB driver: django.db.backends.mysql
 Django version:  2.0.4  tried 2.2 as well
 DRF 3.8.2
 mysqlclient = "==1.4.2"

 This issue only occurred for me when I execute this query.


 {{{
         .annotate(
         minExpiryDate=Min('buyout__expiry_date',
 filter=Q(buyout__is_archived=False, buyout__is_deleted=False))) \
         .filter(Q(minExpiryDate__gte=(now + expiryInterval))
                 & Q(minExpiryDate__lte=(now + expiryInterval +
 timedelta(days=1))))
 }}}


 I tried upgrading to 2.2 and the issue persisted.



 **My stack trace is:
 **
 {{{
 Traceback (most recent call last):
   File "/usr/share/pycharm/helpers/pydev/pydevd.py", line 1741, in
 <module>
     main()
   File "/usr/share/pycharm/helpers/pydev/pydevd.py", line 1735, in main
     globals = debugger.run(setup['file'], None, None, is_module)
   File "/usr/share/pycharm/helpers/pydev/pydevd.py", line 1135, in run
     pydev_imports.execfile(file, globals, locals)  # execute the script
   File "/usr/share/pycharm/helpers/pydev/_pydev_imps/_pydev_execfile.py",
 line 18, in execfile
     exec(compile(contents+"\n", file, 'exec'), glob, loc)
   File "/server/manage.py", line 15, in <module>
     execute_from_command_line(sys.argv)
   File "site-packages/django/core/management/__init__.py", line 381, in
 execute_from_command_line
     utility.execute()
   File "site-packages/django/core/management/__init__.py", line 375, in
 execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "site-packages/django/core/management/base.py", line 316, in
 run_from_argv
     self.execute(*args, **cmd_options)
   File "site-packages/django/core/management/base.py", line 353, in
 execute
     output = self.handle(*args, **options)
   File "/server/buyout/management/commands/send_expiry_reminder_email.py",
 line 8, in handle
     send_expiry_reminder_summary()
   File "site-packages/celery/local.py", line 191, in __call__
     return self._get_current_object()(*a, **kw)
   File "site-packages/celery/app/task.py", line 375, in __call__
     return self.run(*args, **kwargs)
   File "/server/buyout/tasks/expiry_reminder.py", line 46, in
 send_expiry_reminder_summary
     if len(projects_expiring) > 0:
   File "site-packages/django/db/models/query.py", line 250, in __len__
     self._fetch_all()
   File "site-packages/django/db/models/query.py", line 1186, in _fetch_all
     self._result_cache = list(self._iterable_class(self))
   File "site-packages/django/db/models/query.py", line 63, in __iter__
     for row in compiler.results_iter(results):
   File "site-packages/django/db/models/sql/compiler.py", line 1009, in
 apply_converters
     value = converter(value, expression, connection)
   File "site-packages/django/db/backends/mysql/operations.py", line 252,
 in convert_datetimefield_value
     value = timezone.make_aware(value, self.connection.timezone)
   File "site-packages/django/utils/timezone.py", line 264, in make_aware
     return timezone.localize(value, is_dst=is_dst)
   File "site-packages/pytz/__init__.py", line 222, in localize
     if dt.tzinfo is not None:
 AttributeError: 'str' object has no attribute 'tzinfo'
 Exception ignored in: <generator object cursor_iter at 0x7f7ab3f88390>
 Traceback (most recent call last):
   File "site-packages/django/db/models/sql/compiler.py", line 1469, in
 cursor_iter
     cursor.close()
   File "site-packages/MySQLdb/cursors.py", line 86, in close
     while self.nextset():
   File "site-packages/MySQLdb/cursors.py", line 136, in nextset
     nr = db.next_result()
 MySQLdb._exceptions.OperationalError: (2006, '')
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/30224>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/050.69b8ecf2bb0d57e1ec763c18111e021a%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to