Wil*_*ley 5 django pyodbc django-pyodbc-azure
我通常在Django中使用Postgres来满足我的数据库需求,但是最近我在一家在Windows环境中使用MSSQL的公司开始工作。长话短说,我不得不重写settings.py中的数据库属性。不幸的是,我不知道如何使用Pyodbc连接到SQL Server,并且它们正在运行Python 3.x,所以我不能使用Django-Pyodbc。尝试运行它时,我得到一个:“找不到数据源名称,并且未指定默认驱动程序(0)(SQLDriverConnect)')”
这是我目前的数据库配置。我可能做错了事,但是很难找到资源,因为大多数Django + Sql Server结果要么使用FreeTDS要么使用Django-Pyodbc(都不是选项)。
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'db_name_on_server',
'USER': 'my_acct',
'PASSWORD': 'nope',
'HOST': 'x.x.x.x',
'PORT': '1433',
'OPTIONS': { # Options are not edited
'driver': 'SQL Server', # What it displays as on odbc admin
'dsn': 'System DSN', # What it displays as on odbc admin
'use_legacy_datetime': False
}
Run Code Online (Sandbox Code Playgroud)
旧问题,但这可能对某人有帮助。这些是我在Windows中用于连接到SQL Server的设置。正如@flipperpa所说,我也使用django-pyodbc-azure
pyodbc==3.0.10
django-pyodbc-azure==1.10.0.1
Run Code Online (Sandbox Code Playgroud)
但是,pip将下载的pyodbc对我不起作用。按照此答案的建议,转到此站点http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyodbc并根据您安装的Python 3.5的版本进行下载:
pyodbc?3.0.10?cp35?none?win32.whl 如果您安装了32位Python 3.5pyodbc?3.0.10?cp35?none?win_amd64.whl 如果您安装了64位Python 3.5然后使用以下设置进行连接:
'default': {
'ENGINE': 'sql_server.pyodbc',
'HOST': "localhost",
'USER': "--user name--",
'PASSWORD': "--password--",
'NAME': "--database name--",
'PORT': 1433,
'OPTIONS': {
'driver' : 'SQL Server Native Client 11.0',
'MARS_Connection' : True,
'driver_supports_utf8' : True,
},
}
Run Code Online (Sandbox Code Playgroud)
对于使用Linux的任何人,MS现在都已经发布了用于SQL Server的官方odbc驱动程序,并且正式(如果不是默契的话)支持django-pyodbc-azure项目。我强烈建议使用它以及FreeTDS上的本机linux SQL Server ODBC驱动程序。
我在以下堆栈中获得了最好的运气,并且我们是一家专门的 Python 3 商店:
假设您已将odbc.ini、odbcinst.ini、freetds.conf全部平方,以下是适合我的设置示例。其中一些取决于您是否使用 SQL Server 2008+:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'HOST': 'yourserver.com',
'PORT': '1433',
'NAME': 'your_db',
'USER': 'your_user',
'PASSWORD': 'your_pw',
'AUTOCOMMIT': True,
'OPTIONS': {
'driver': 'FreeTDS',
'unicode_results': True,
'host_is_server': True,
'extra_params': 'tds_version=7.2;',
},
},
}
Run Code Online (Sandbox Code Playgroud)
如果您运行的是 SQL Server 2005 或更低版本,您还需要包含在内'use_legacy_datetime': True,,否则,它将使用新的 SQL Server 2008+ 日期字段。如果您使用过时的驱动程序,它也会自动设置为 true。祝你好运!
| 归档时间: |
|
| 查看次数: |
8590 次 |
| 最近记录: |