Windows环境
- 安装驱动https://docs.microsoft.com/zh-cn/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15
- 设置密码方式认证
- 网络连接配置
- 网络连接配置
- 安装依赖
pip install django-sqlserver django-pytds pyodbc django-pyodbc django-pyodbc-azure pypiwin32
推荐在pycharm中手动安装
-
配置ODBC数据源
-
settings.py
DATABASES = { 'default': { 'ENGINE': 'sql_server.pyodbc', 'NAME': 'xxxxxxx', 'USER': 'xxxxxxxxx', 'PASSWORD': 'xxxxxxxxx', 'HOST': 'localhost', 'PORT': '1433', 'OPTIONS': { 'driver':'SQL Server Native Client 10.0', # 要与上面配置的ODBC数据源名称一致,同时注意,driver 为小写,切记切记!!!!!之前就因为这个问题折腾了整整一天 'MARS_Connection': True, # 不能少了这项 }, }, }
RedHat环境
-
须安装SQLServer驱动、unixODBC等依赖,具体操作见我另一篇随笔https://blog.csdn.net/weixin_38848757/article/details/114325932中关于SQLServer的配置部分。特别注意,由于必须依赖django-pyodbc-azure只支持Django>2.1 <=2.2,所以如果django版本不在这个区间的话基本就告别SQLServer了(据说高于2.2版本的django可以使用django-mssql-backend,小试了下也没成功,今后有需求可以参考https://blog.csdn.net/jackquin/article/details/104982314)。不要轻易尝试降级Django,别问我为什么。。。
-
安装系统依赖
yum -y install ncurses-devel
-
安装py依赖
pip install pyodbc django_pyodbc django-pyodbc-azure django-sqlserver
-
等按照下面步骤安装freedtds之后可以测试一下
import pyodbc DBCONNECTSTR = 'DRIVER={/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.7.so.1.1};SERVER=139.123.1.102;port=1433;DATABASE=BDS;UID=sa;PWD=root;TDS_Version=7.4;' conn=pyodbc.connect(DBCONNECTSTR) conn.execute('select getdate()').fetchall() # [(datetime.datetime(2021, 3, 10, 10, 10, 14, 263000), )] conn.close()
-
-
安装freetds
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.2.18.tar.gz tar -zxf freetds-1.2.18.tar.gz cd freetds-1.2.18/ ./configure --prefix=/usr/local/freetds --with-tdsver=7.4 --enable-msdblib # –with-tdsver 设置TDS版本;–enable-msdblib 是否允许Microsoft数据库函数库 make && make install
-
测试
/usr/local/freetds/bin/tsql -H 139.123.1.102 -p 1433 -U sa -P root # locale is "en_US.UTF-8" # locale charset is "UTF-8" # using default charset "UTF-8" 1> select @@version 2> go # Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) # Jun 28 2012 08:36:30 # Copyright (c) Microsoft Corporation # Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) # # (1 row affected) 1> ^C # 或者可以配置一个固定的数据源 vim /usr/local/freetds/etc/freetds.conf [TestDB] host = 139.123.1.102 port = 1433 tds version = 7.4 # 据说这个版本号只要不小于实际版本好就行,我的freetds是7.4的 :wq /usr/local/freetds/bin/tsql -S TestDB -U sa -P root # 连接正常即可
-
-
配置unixODBC
-
配置odbcinst.ini(该文件默认是空的)
find / -name libtdsodbc.so.0 # /usr/local/freetds/lib/libtdsodbc.so.0 vim /etc/odbcinst.ini # 插入以下配置,其中Driver、Setup路径为上面搜索出的目录 [FreeTDS] Description=FreeTDS unixODBC Driver Driver=/usr/local/freetds/lib/libtdsodbc.so.0 Setup=/usr/local/freetds/lib/libtdsodbc.so.0 UsageCount=1
配置好后用odbcinst -q -d命令测试一下
-
配置 odbc.ini(该文件默认也是空的)
[MQ1] Driver=FreeTDS Server=139.123.1.102 User=dbcheck TDS_Version=7.4 Port=1433
配置好后isql MQ1 sa root测试一下
-
-
配置Django工程setting.py
DATABASES = { 'default': { 'NAME': 'BDS', 'ENGINE': 'sql_server.pyodbc', 'HOST': '139.123.1.102', 'USER': 'sa', 'PASSWORD': 'root', 'PORT': '1433', 'default-character-set': 'utf8', 'OPTIONS': { 'AUTOCOMMIT': True, 'host_is_server': True, 'unicode_results': True, 'driver': 'FreeTDS', 'extra_params': 'TDS_VERSION=7.4', # 注意这个版本号 } } }
-