3

我难住了。使用我的本地设置(python manage.py runserver)一切运行良好。通过我的生产设置(wsgiserver.CherryPyWSGIServer),'unicode' object has no attribute 'tzinfo'当我的程序尝试将数据库中的 datetime2(7) 转换为 pytz 模块中的本地时间时,我得到了。使用 Django 1.9。

  • 两种设置都使用 django-pyodbc-azure 连接到同一个 mssql 数据库。事实上,为了解决这个问题,两者都使用相同的设置文件。

    # settings.py
    ...
    
    DATABASES = {
        'default': {
            'ENGINE': 'sql_server.pyodbc',
            'NAME': 'dbname',
            'OPTIONS': {
                'use_mars': True,
                'use_legacy_datetime': True,
                'driver': 'SQL Server Native Client 11.0'
            }
        }
    }
    
    ...
    
    # Relevant to runserver command:
    WSGI_APPLICATION = 'wsgi.application'
    
  • 通过运行此文件运行生产:

    # deploy_server.py
    
    from . import wsgi
    sn = socket.gethostname()
    
    server = wsgiserver.CherryPyWSGIServer(
        ('0.0.0.0', 8009), wsgi.application, server_name=sn,
    )
    server.start()
    
  • 本地使用 Django 的 runserver 命令运行

  • wsgi.py:

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
    
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()
    

我最初在本地遇到了同样的问题,但是使用显示的选项配置数据库解决了这个问题。

任何帮助都是极好的。

4

0 回答 0