赞
踩
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, # 不能少了这项
- },
- },
- }
须安装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', # 注意这个版本号
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。