【问题标题】:Use Django pyodbc SQLSERVER issue使用 Django pyodbc SQLSERVER 问题
【发布时间】:2012-06-01 13:30:07
【问题描述】:

我正在尝试将 django 与 sqlserver 连接。我已经安装了 python odbc 和 django-odbc。

我的数据库配置(settings.py)

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'EDAS',                      # Or path to database file if using sqlite3.
        'USER': 'sa',                      # Not used with sqlite3.
        'PASSWORD': '1324',                  # Not used with sqlite3.
        'HOST': 'DBIO01-HP',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '1433'                      # Set to empty string for default. Not used with sqlite3.
    }
}

但是,当我尝试运行服务器时出现此错误:

C:\edas>python manage.py runserver

Validating models...

Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib.staticfiles.management.comma
nds.runserver.Command object at 0x02EC2E70>>
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 91, in inner_run
    self.validate(display_num_errors=True)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 266, in validate
    num_errors = get_validation_errors(s, app)
  File "C:\Python27\lib\site-packages\django\core\management\validation.py", line 23, in get_validation_errors
    from django.db import models, connection
  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 40, in <module>
    backend = load_backend(connection.settings_dict['ENGINE'])
  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 34, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 92, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 24, in load_backend
    return import_module('.base', backend_name)
  File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in import_module
    __import__(name)
  File "C:\Python27\lib\site-packages\sql_server\pyodbc\base.py", line 56, in <module>
    elif 'collation' in settings.DATABASE_OPTIONS:
  File "C:\Python27\lib\site-packages\django\utils\functional.py", line 185, in inner
    return func(self._wrapped, *args)
AttributeError: 'Settings' object has no attribute 'DATABASE_OPTIONS'

谁能帮我弄清楚如何解决它?

【问题讨论】:

    标签: django pyodbc django-pyodbc


    【解决方案1】:

    通过切换到 Michael Baltaks 提到的分支,我走得更远了。我使用以下命令卸载旧的不兼容版本:

    $ pip uninstall sql-server.pyodbc
    

    然后安装 git-hub 版本:

    $ pip install https://github.com/avidal/django-pyodbc/archive/django-1.4.zip
    

    然而,这并没有让我一直工作。我现在收到以下错误:

    pyodbc.Error: ('00000', '[00000] [iODBC][Driver Manager]dlopen({FreeTDS}, 6): image not found (0) (SQLDriverConnect)')

    【讨论】:

      【解决方案2】:

      看起来有人在这里为 django 1.4 选择了 django-pyodbc https://github.com/avidal/django-pyodbc

      【讨论】:

        【解决方案3】:

        兄弟,

        这已经 2 岁了...希望您有答案。 对于它的价值:您声明的数据库对象需要一个“选项”参数,见下文。

        #Database connector
        DATABASES = {
            'default': {
                'ENGINE': '',
                'NAME': '',
                'USER': '',
                'PASSWORD': '',
                'HOST': '',
                'PORT': '',
                'OPTIONS': {
                    'driver': '',
                    'MARS_Connection': True,
                },
            }
        }

        【讨论】:

          【解决方案4】:

          看起来 django-odbc 是一个死项目,并且不再与最新的 Django 兼容,从 1.3 版开始。

          您可以通过编辑 C:\Python27\lib\site-packages\sql_server\pyodbc\base.py",第 56 行查看 settings.DATABASES['default'].get('options') 来修复它,但如果您这样做,您无疑会发现更多进一步的不兼容。

          【讨论】:

          • 是否还有其他活动项目可以替代 django-odbc?
          【解决方案5】:

          看看这个分叉:https://github.com/avidal/django-pyodbc

          兼容 Django 1.4

          【讨论】:

            【解决方案6】:

            这对我有用,特别是 driver_supports_utf8 行:

            'dbconn': {
                        'CREATE_DB': False,
                        'CREATE_USER': False,
                        'CREATE_TBLSPACE': False,
                        'ENGINE': 'django_pyodbc',
                        'NAME': 'DBNAME',
                        'USER': 'user',
                        'PASSWORD': 'password',
                        'HOST': 'HOST',
                        'OPTIONS': {
                            'host_is_server': True,
                            'driver_supports_utf8': True,
                        }
                    }
            

            【讨论】:

              【解决方案7】:

              删除Lib\site-packages\中的sql server文件夹,然后执行 pip install django-pyodbc-azure pip install sql_server.pyodbc

              【讨论】:

                猜你喜欢
                • 2017-02-19
                • 1970-01-01
                • 2014-08-14
                • 2013-04-16
                • 2014-12-24
                • 1970-01-01
                • 1970-01-01
                • 2014-05-01
                • 1970-01-01
                相关资源
                最近更新 更多