python 通过Sybase ASE ODBC Driver访问sybase数据库,无需配置DSN【自己整理的】


Python语言对于开发工程师或者测试工程师来说,应该是最高效的开发语言之一。
但python访问sybase数据库的资料相对少见。而且sybase字符集为GB1803时,python访问sybase库中的中文,结果都不理想。

要么使用收费第3方库,就是要自己编译开源库,总之过程很痛苦。

下面将本人整理的资料分享出来,希望帮到您。

  1. 选择合适的Sybase ASE ODBC Driver。参见https://download.csdn.net/download/iihero/3914619。为了方便大家下载,这里通过百度云分享。

    链接:https://pan.baidu.com/s/1wm-swb4w70TK_VIa08qKHg 
    提取码:seiq

  2. 安装过程,参见下图的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

     

  3. 由于该驱动本质是32bit的,所以Python和pyodbc也要用32bit的。否则会出现很多奇怪的问题。
  4. 调用代码如下:
     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() 

       上面资料整理是几年前的事情了,最近有个朋友遇到困难,刚好帮到他,很开心。想到自己一点小小经验,不能敝帚自珍,所以分享出来。错误或者不当之处,请指正。