设为首页 收藏本站
查看: 931|回复: 0

[经验分享] django访问sql server--django-pyodbc

[复制链接]
发表于 2016-10-31 07:29:40 | 显示全部楼层 |阅读模式
  描述:用django访问sql server,网上有介绍几种方法,这是主要介绍django-pyodbc
  测试环境:
  系统: ubuntu 12.04
  django 1.4
  python 2.7
  pyodbc 3.0.3 (python连接sql server的包)
  django-pyodbc 1.2 (一个django连接数据库的第三方包,主要用pyodbc连接sql server)
  
  安装调试
  主要参考文档:
  http://logrit.com/weblog/2012/07/16/accessing-sql-server-mssql-database-django/
  
  http://tzangms.com/programming/2391/
  
  关于利用pyodbc访问sql server,可参考以前写的一篇文档:
  http://xiaolin0199.iyunv.com/blog/2020913
  
  安装odbc和pyodbc

sudo apt-get install unixodbc unixodbc-dev freetds-dev tdsodbc python-dev
sudo easy_install pyodbc
  
  配置odbc
  
  修改/etc/odbc.ini,添加 

[ODBC Data Sources]
ODBCNAME = Microsoft SQL Server
[MSSQL-PYTHON]
Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Description = Hi! This is a description of the MSSQL-PYTHON driver
Trace = No
#Database = cxonline
Server = 192.168.0.47
Port = 1433
  
  测试
  
  可通过isql命令测试odbc是否可连接服务器192.168.0.47上的sql server 

isql -v MSSQL-PYTHON <Username> <Password>
SELECT TOP 1 * FROM <SomeTable>
  
  安装django-pyodbc
  django-pyodbc (google-code):http://code.google.com/p/django-pyodbc/
  
  可通过以下命令安装:

svn checkout http://django-pyodbc.googlecode.com/svn/trunk/ django-pyodbc-read-only
cd django-pyodbc-read-only
python setup.py build install
  
  
  当然也可以直接将安装包中的sql_server copy到要使用的项目根目录下,
  
  由于下面要说的该包中有一个小bug,所以我直接将包copy到项目根目录下,修改bug后加入svn
  
  关于django-pyodbc的一个bug
  修改sql_server/pyodbc/operations.py 10行

def __init__(self, connection):
#super(DatabaseOperations, self).__init__()
super(DatabaseOperations, self).__init__(connection)
self.connection = connection
self._ss_ver = None
  
  django-pyodbc的使用

写道

当前面的odbc都配置成功时,使用django-pyodbc就相当简单,
只要配置下数据库就可以连接sql server,而且可使用django原来的orm的写法
包括通过模型的定义来创建数据库等
  
  
  修改 settings.py

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'icgoo_manage',                      # Or path to database file if using sqlite3.
'USER': 'lidongdev',                      # Not used with sqlite3.
'PASSWORD': 'xxxxx',                  # Not used with sqlite3.
'HOST': '192.168.0.8',                      # Set to empty string for localhost. Not used with sqlite3.
'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
},
'mssql': {
'NAME': 'cxonline_new',
'ENGINE': 'sql_server.pyodbc',
'HOST': '192.168.0.47',
'USER': 'sa',
'PASSWORD': 'xxxxxx',
'PORT': '1433',                      # Set to empty string for default. Not used with sqlite3.
'OPTIONS': {
'host_is_server': False,
'dsn': 'MSSQL-PYTHON',
},
}
}
DATABASE_OPTIONS = {
'host_is_server': False,
'dsn': 'MSSQL-PYTHON',
}
写道

定义的mssql就是用于连接sql server,
settings中关键是需要定义dsn到上面配置好的odbc数据源
'dsn': 'MSSQL-PYTHON',
  
  
  简单调试

#进入django项目的shell调试
$python manage.py shell
>>> from django.db import connections
>>> conn = connections['mssql']
>>> cur = conn.cursor()
>>> cur.execute('select Top 1 * from _CRM_Company')
<pyodbc.Cursor object at 0xac1b528>
>>> cur.fetchall()
[(13528, u'\u91cd\u5e86\u65e0\u7ebf\u7eff\u6d32\u901a\u4fe1\u6280\u672f\u6709\u9650\u516c\u53f8', None, 1, u' ', None, u' ', u' ', None, None, None, No
ne, False, 0, None, True, 83, 1, datetime.datetime(2008, 8, 28, 8, 55, 2, 240000), None, 2, None, -1, 0.0, 0.0)]
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-293526-1-1.html 上篇帖子: MS SQL Server 2005 相关问题整理 下篇帖子: 理解SQL Server中的权限体系
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表