Linux上使用MSSQL Server作为Django的Database Backend
来源:互联网 发布:dsm 数据安全 编辑:程序博客网 时间:2024/06/01 07:37
http://www.digglife.net/articles/mssql-as-database-backend-django.html
Django只内置了几个 Database Backend,默认并不支持 Microsoft SQL Server
( 以下用 MSSQL 代替 )。官方手册中提供的第三方 MSSQL Backend 因为依赖的问题只支持 Windows 平台,在 Linux Server 上不可用。可能很多人会问,谁会在 Linux 上用邪恶的 MSSQL 当 Django 的数据库后台,其实在企业中很多事情身不由己,各种奇葩的需求都会有,这种算是比较小儿科的了。庆幸的是微软“大发慈悲”在2012年给 Redhat 提供了官方ODBC驱动(以前得用第三方的FreeTDS),而 Django 的第三方库中有比较完善的 ODBC 支持,所以我们可以迂回实现。
实现模式:MSSQL Server -> MSSQL Server ODBC Driver -> pyodbc -> django-pyodbc -> django frontend
。
安装MSSQL Server ODBC Driver 1.0
到微软的 Download Center下载 MSSQL Server ODBC Driver ,注意目前只支持64位的 RHEL 5/6 ,理论上 CentOS 也是支持的。压缩包里的 README 有详细的安装说明,也有比较完善的Shell安装脚本,我安装的时候并没有碰到什么异常。基本步骤:
- 如果Server上已经安装有
unixODBC DriverManager
,先卸载。 - 使用压缩包中的 build_dm.sh 编译安装
unixODBC DriverManager
。这样做的好处是可以保证 configure 的各项参数符合要求,比如MSSQL的默认unicode字符集是UTF-16,所以 configure 参数里需要有
--with-iconv-ucode-enc=UTF16LE
。 - 确定
unixODBC
正确安装之后,就可以运行./install.sh install
来安装 MSSQL Server ODBC Driver了。
安装pyodbc和django-pyodbc
sudo pip install pyodbc django_pyodbc
即可。其实安装完pyodbc我们就可以在python的shell下测试了驱动是否安装成功。
123
import pyodbcconnection = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=127.0.0.1;DATABASE=test;UID=user;PWD=password')cousor = connection.cursor()
如果提示无法import,多半是权限问题。
配置django settings
在 project 的 settings.py
中添加新的数据库设定,示例一枚:
12345678910
'test':{ 'ENGINE':'django_pyodbc', 'NAME':'test', 'HOST':'127.0.0.1', 'USER':'test', 'PASSWORD':'password', 'OPTIONS': { 'driver': 'SQL Server Native Client 11.0', },}
就是这么简单。然后惯例 ./manage.py shell
测试一下
1234
from django.db import connectionscur = connections['test'].cursor()cur.execute("SELECT * FROM testtable")cur.fetchone()
如果能正常获得query结果说明一切正常。
因为我只是需要在一个APP的Views里通过 Raw SQL 来查询远程MSSQL的数据库,并不用在Model中使用它,所以并没有配置数据库路由,有需要的话可以参见Django的Multiple databases 参考手册。
这个方法不仅适合MSSQL,对所有支持 ODBC 的 Database Server 应该都适用,说起来这都得感谢开放的微软同志呢。
- Linux上使用MSSQL Server作为Django的Database Backend
- Django使用pymysql作为mysql操作backend
- 使用 CherryPy 作为Django的Development Server
- 使用 CherryPy 作为Django的Development Server
- Nova使用LDAP作为backend认证
- windows anaconda3 tensorflow作为Keras的backend
- 关于django celery配置的backend
- 使用django的login来登陆用户的时候需要为用户模型添加backend
- 使用Tornado作为Django App的服务器
- unknown database backend
- Installing DB Connect with MSSQL Server Database
- django.core.exceptions.ImproperlyConfigured: 'mysql' isn't an available database backend.
- django migrate raise ValueError('The database backend does not accept 0 as a '
- django 报错:ValueError: The database backend does not accept 0 as a value for AutoField.
- 使用Keras时后端(backend)的切换——切换Tensorflow backend和Theano backend
- 在Ubuntu中安装以theano作为backend的keras
- 使用nginx作为websocket的proxy server
- Linux下FreeTDS访问MSSQL Server的配置
- Android——高德地图设置中心点和缩放比例,获取两点之间距离
- (一)U-Boot启动过程--详细版的完全分析
- 9.6穷举法解决组合问题(1)百钱百鸡
- Android网络框架Volley(实战篇)
- Android Thread的使用
- Linux上使用MSSQL Server作为Django的Database Backend
- arm-linux-gcc 和gcc的问题
- Android如何支持多种屏幕
- unity3D——GUI基础2
- UVA - 10791 Minimum Sum LCM 分解质因子
- 要期末了 我要跑了
- viewpage设置引导页之最后一页左滑跳转
- 用androidpn来实现推送
- css 阴影