2013-01-15 79 views
1

我试图使用django-pyodbc版本连接到外部SQL Server Express数据库:this github link,但是当我运行manage.py shell来检查我是否可以执行来自ORM的命令时,我不断收到此错误与Django一起使用SQL Server后端

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数据库接口的小型应用程序,同时能够使用普通的Django ORM命令替代pyodbc连接字符串(以及使用pyodbc的BTW,我可以连接到没有问题的SQL Server数据库)

+0

我遇到这个完全相同的问题。 Django 1.5或1.6,使用avidal分叉的django-pyodbc repo连接到SQL Server 2008。获得完全相同的错误,你是。你解决了这个问题吗? – knite

+0

@knite我实际上跳过了这个实现,因为SQL位在我的项目中并不是非常关键的 –

回答

2

它似乎对我说,你正在使用的老回购的Django的pyodbc在http://code.google.com/p/django-pyodbc/

确保干净地卸载旧版本,然后重新安装

pip uninstall sql-server.pyodbc 
pip install git+https://github.com/avidal/django-pyodbc.git 
+0

这很奇怪。我很确定我会卸载django-pyodbc的旧版本。我已经从这个解决方案转向了,但是感谢你的回应。 –

+0

这对我造成了一个新问题...... django.core.exceptions.ImproperlyConfigured:'sql_server.pyodbc'不是可用的数据库后端。 –

相关问题