我正在使用VirtualEnv和Pip在Ubuntu服务器(Ubuntu 16.04.3 LTS)上运行Django(1.8)。
pip freeze
astroid==1.5.3
backports.functools-lru-cache==1.4
configparser==3.5.0
Django==1.8
django-mssql==1.8
django-pyodbc==1.1.1
django-pyodbc-azure==1.11.0.0
django-sqlserver==1.11
enum34==1.1.6
future==0.16.0
inflection==0.3.1
isort==4.2.15
lazy-object-proxy==1.3.1
mccabe==0.6.1
peewee==3.1.5
pkg-resources==0.0.0
psycopg2==2.7.3.1
pyad==0.5.15
pylint==1.7.4
pyodbc==4.0.19
PyPiwi==1.8
python-tds==1.8.2
pytz==2017.2
singledispatch==3.4.0.3
six==1.11.0
South==1.0.2
wrapt==1.10.11
我目前正在努力使用sqlserver_ado ENGINE并且正在使用它,因为它似乎是最受欢迎的,但我知道django.db.backends.postgresql_psycopg2和sql_server.pyodbc,并愿意在下降时跳槽一顶帽子。
所以我的DATABASES定义如下:
'default': {
'NAME': 'DB_NAME',
'ENGINE': 'sqlserver_ado',
'HOST': 'HOSTNAME\\SQLEXPRESS',
'PORT': '56988',
'USER': 'mssql_name',
'PASSWORD': 'mssql_pw',}
Django运行此信息。太棒了。但是当我点击我的功能时,
def my_custom_sql(self):
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM [GM].[Acct]")
row = cursor.fetchone()
return row
我遇到异常:使用DATABASE PORT时,DATABASE HOST必须是IP地址。如果我尝试将主机更改为IP地址,Django将无法运行,并且会发出以下信息:
File "/home/jason/env/local/lib/python2.7/site-packages/sqlserver_ado/dbapi.py", line 183, in connect
import pythoncom
我试过pip install pypipwin32。
当我使用python3运行django时,我得到 ImportError:没有名为'sqlserver_ado'的模块
如果有人能够朝着正确的方向推动我,那将是值得赞赏的。
为了完整起见,以下是我对tsql的一些尝试,但同样,我的连接一直被拒绝:
/etc/odbc.ini
[DARKTOWER_SQLEXPRESS]
Description=Test
Driver=FreeTDS
Database=DB
Servername=DARKTOWER\\SQLEXPRESS
port=56988
TDS_Version=7.2
/etc/odbcinst.ini
[ODBC]
Trace = Yes
TraceFile = /tmp/odbc.log
[FreeTDS]
Description = v0.91 with protocol v7.2
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
UsageCount = 1
/etc/freetds/freetds.conf
[DARKTOWER]
host = DARKTOWER\\SQLEXPRESS
port = 56988
tds version = 7.2
使用这些设置取得了一些成功。不喜欢使用域帐户...
'default': {
'ENGINE': 'sql_server.pyodbc', #'sqlserver_ado', #'sql_server.pyodbc',
'HOST': 'DARKTOWER\\SQLEXPRESS',
'PORT': '56988',
'USER': 'DOMAIN\\Jason',
'PASSWORD': 'xxxxxxxxxxxx',
'NAME': 'DB',
'AUTOCOMMIT': True,
'OPTIONS':{
'driver': 'FreeTDS',
'host_is_server': True,
'extra_params': 'tds_version=7.2',},
}
我仍然对其他人的解决方案感兴趣。
答案 0 :(得分:0)
尝试使用以下内容:
'default': {
'ENGINE': 'sqlserver',
'HOST': 'aws2.myhost.com',
'PORT': '1433',
'USER': 'xxxxx',
'PASSWORD': 'nbxxxa$$sxxxxxts$$xxxx',
'NAME': 'MyDBName',
而不是你拥有的。我有与你相同的sql pip条目,这就是我连接到sql server时我的settings.py看起来的样子