Использование бэкэнда SQL Server с Django

Я пытаюсь подключиться к внешней базе данных SQL Server Express, используя версию django-pyodbc по адресу: эта ссылка github но я продолжаю получать эту ошибку, когда запускаю manage.py shell, чтобы проверить, могу ли я выполнять команды ORM.

Traceback (most recent call last):
File "manage.py", line 10, in <module>
  execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line   443, in execute_from_command_line
  utility.execute()
File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
  self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
  self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py",line 232, in execute
  output = self.handle(*args, **options)
File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py",line 371, in handle
  return self.handle_noargs(**options)
File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/shell.py", line 45, in handle_noargs
  from django.db.models.loading import get_models
File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
  backend = load_backend(connection.settings_dict['ENGINE'])
File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
  return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
  conn = backend.DatabaseWrapper(db, alias)
File "/usr/local/lib/python2.7/site-packages/sql_server/pyodbc/base.py", line 133, in __init__
  self.ops = DatabaseOperations(self)
File "/usr/local/lib/python2.7/site-packages/sql_server/pyodbc/operations.py", line 10, in __init__
  super(DatabaseOperations, self).__init__()
  TypeError: __init__() takes exactly 2 arguments (1 given)

Мой settings.py имеет это:

DATABASES = {
    'default': {
       'ENGINE': 'sql_server.pyodbc',
       'NAME': 'DBName',
       'HOST': '192.168.29.1',
       'USER': 'user',
       'PASSWORD': 'pswd',
       'PORT': 1433,
    }
}

DATABASE_OPTIONS = {
    'driver': '/usr/local/lib/libtdsodbc.so',
    'dsn': 'FreeTDS',
    'extra_params': "TDS_VERSION=8.0"
}

Я в полной растерянности относительно того, что я должен делать, так что все идеи приветствуются. По сути, я хочу иметь возможность использовать небольшое приложение, которое я сделал для взаимодействия с базой данных SQL Server, и в то же время иметь возможность использовать обычные ORM-команды DJango вместо строк подключения pyodbc (и, кстати, используя pyodbc, я могу подключиться к База данных SQL Server без проблем)


person Stephen M    schedule 15.01.2013    source источник
comment
Я испытываю точно такую ​​же проблему. Django 1.5 или 1.6, подключение к SQL Server 2008 с помощью разветвленного репозитория avidal django-pyodbc. Получение точно такой же ошибки, как у вас. Вы решили это?   -  person knite    schedule 27.02.2014
comment
@knite На самом деле я пропустил эту реализацию, так как бит SQL не был очень важен в моем проекте.   -  person Stephen M    schedule 27.02.2014


Ответы (1)


мне кажется, что вы используете старое репо для django-pyodbc по адресу http://code.google.com/p/django-pyodbc/

обязательно удалите старую версию, а затем переустановите

pip uninstall sql-server.pyodbc
pip install git+https://github.com/avidal/django-pyodbc.git
person ornoone    schedule 28.01.2013
comment
Это очень странно. Я был почти уверен, что удалил старую копию django-pyodbc. Я уже ушел от этого решения, но спасибо за ответ. - person Stephen M; 29.01.2013
comment
Это вызвало у меня новую проблему... django.core.exceptions.ImproperlyConfigured: 'sql_server.pyodbc' не является доступной базой данных. - person Hack-R; 08.11.2016