当前位置: 代码迷 >> Sybase >> python sybase装配
  详细解决方案

python sybase装配

热度:2629   发布时间:2013-02-26 00:00:00.0
python sybase安装
  废话不多说了,因为sybase的python比较搞,所以在此留个记录。

  一开始不是很了解python-sybase怎么有那么多不同的client啊,ase client,open_client,freetds,真让人迷惑。
  
  最初,当我费了九牛二虎之力,把open_client和python都成功后,却发现,要链接远程主机,还需要使用制定在$SYBASE/interfaces中的名字服务,大怒,于是放弃之。总结一下,只单独安装sybase client的方法,sybase的linux全部包有800M不到,如果只是按照open client的话,其实之需要100M左右就好了:即只按照archives下边的lang和open client,当然了locales下边的那些语言包,要自己从ase的服务器拷贝了。

   既然oc的那么难用,于是就尝试一下freetds,发现这个东西确实很方便,只需要主机/端口就可以了,而且其安装后也不是很大,才几M而已,如果是red hat,还有现成的rpm可以下载。总之,这个freetds确实挺不错。但是如果用dsql或者python来访问比较新的sybase,会出现:
引用
TDS: unexpected token 45
异常提示,其实这只是sybase服务器发回的locale信息而已,不影响正常的使用,但是如果在python中,却是throw一个异常,我的解决办法是修改python-sybase的源代码(Sybase.py),找到
引用
elif mn in (0, 1918, 5701, 5703, 5704, 11932) or ((mn >= 6200) and (mn < 6300)):

将21,加在 mn in(0,1918)之间,即(0,21,1918...)5-25更新:最新的freetds应该不需要了
编译的时候要定义 HAVE_FREETDS
引用
python setup.py build_ext -DHAVE_FREETDS