python 通过Sybase ASE ODBC Driver访问sybase数据库,无需配置DSN【自己整理的】
Python语言对于开发工程师或者测试工程师来说,应该是最高效的开发语言之一。
但python访问sybase数据库的资料相对少见。而且sybase字符集为GB1803时,python访问sybase库中的中文,结果都不理想。
要么使用收费第3方库,就是要自己编译开源库,总之过程很痛苦。
下面将本人整理的资料分享出来,希望帮到您。
- 选择合适的Sybase ASE ODBC Driver。参见https://download.csdn.net/download/iihero/3914619。为了方便大家下载,这里通过百度云分享。
链接:https://pan.baidu.com/s/1wm-swb4w70TK_VIa08qKHg
提取码:seiq - 安装过程,参见下图的2个文档,也可以参见:
http://blog.csdn.net/iihero/article/details/17173011,
http://www.cnblogs.com/ycusking/archive/2012/02/13/sql_link_sybase.html。
请参照readme.txt,如64位的Window,运行odbc_x64.bat后,在c:\windows\syswow64\odbcad32,就可以在驱动列表里看到Sybase ASE ODBC Driver这个驱动了。如果没有看到,需要手工执行:
regedit /s .\ODBC_64.reg
regedit /s .\Sybase_64.reg - 由于该驱动本质是32bit的,所以Python和pyodbc也要用32bit的。否则会出现很多奇怪的问题。
- 调用代码如下:
1 import pyodbc 2 4 # 参考http://bbs.csdn.net/topics/380063945,从中获得灵感,无需配置DSN。 5 conn = pyodbc.connect('DRIVER={Sybase ASE ODBC Driver};NetworkAddress=10.10.132.110,5000;DATABASE=jkp_tjzlk;UID=sa;PWD=123456') 6 cursor = conn.cursor() 7 cursor.execute("SELECT famc FROM sn_wffa_gl ") 8 for row in cursor: 9 for col in row: 10 print(col) 11 cursor.close() 12 conn.close()
上面资料整理是几年前的事情了,最近有个朋友遇到困难,刚好帮到他,很开心。想到自己一点小小经验,不能敝帚自珍,所以分享出来。错误或者不当之处,请指正。