博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python用sybase自带的sybpydb模块访问数据库
阅读量:5925 次
发布时间:2019-06-19

本文共 3848 字,大约阅读时间需要 12 分钟。

hot3.png

sybase自带的sybpydb模块用ucs2,而ubuntu14.04默认安装的python是ucs4,直接import会出错

$ pythonPython 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import sybpydbTraceback (most recent call last):  File "
", line 1, in 
ImportError: /opt/sybase/OCS-16_0/python/python26_64r/lib/sybpydb.so: undefined symbol: PyUnicodeUCS2_Decode

故需要自己下载源码、编译安装

一、安装python

wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz

 ./configure --prefix=/opt/local/python27 --enable-unicode=ucs2

mak&sudo make install

二、安装setuptools(为了顺利安装其它模块)

wget

/opt/local/python27/bin/python setup.py build

sudo /opt/local/python27/bin/python setup.py install

这样源码安装的模块都在/opt/local/python27/lib/python2.7/site-packages 目录下了

或先安装pip(先下载get-pip.py,然后安装pip):Installing with get-pip.py

To install pip, securely download . :

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

Inspect get-pip.py for any malevolence. Then run the following:

sudo /opt/local/python27/bin/python  get-pip.py

这样/opt/local/python27/bin下面就有了pip和easy_install

注意:easy_install也要用/opt/local/python27/bin/下的那个版本,如安装matlab模块

 sudo /opt/local/python27/bin/easy_install matplotlib

~$ /opt/local/python27/bin/pythonPython 2.7.11 (default, Mar 12 2016, 23:13:42) [GCC 5.3.0 20151204] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import sys>>> sys.path['', '/opt/local/python27/lib/python2.7/site-packages/setuptools-20.2.2-py2.7.egg', '/opt/local/python27/lib/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg', '/opt/local/python27/lib/python2.7/site-packages/ibm_db-2.0.6-py2.7-linux-x86_64.egg', '/opt/local/python27/lib/python2.7/site-packages/pymssql-2.1.1-py2.7-linux-x86_64.egg', '/opt/local/python27/lib/python27.zip', '/opt/local/python27/lib/python2.7', '/opt/local/python27/lib/python2.7/plat-linux2', '/opt/local/python27/lib/python2.7/lib-tk', '/opt/local/python27/lib/python2.7/lib-old', '/opt/local/python27/lib/python2.7/lib-dynload', '/opt/local/python27/lib/python2.7/site-packages', '/opt/sybase/OCS-16_0/python/python26_64r/lib']>>>

可以看到/opt/local/python27/lib/python2.7/site-packages已经在自己编译的那个python的搜索路径了。

三、sybpydb.so模块加入到python路径

在该目录下创建sybpydb.pth(名字随便取、后缀必须pth)内容如下:

/opt/sybase/OCS-16_0/python/python26_64r/lib

四、测试

vi sybpytest1.py

#!/opt/local/python27/bin/pythonimport sybpydbconn = sybpydb.connect(user='mymotif', password='wxwpxh', servername='MYMOTIFVOSTRO145480')cur = conn.cursor()cur.execute('select * from STUDENT')rows = cur.fetchall()for row in rows:	print "-" * 55	for col in range (len(row)):		print "%s" % (row[col])cur.close()conn.close()

$ chmod +x sybpytest1.py 

$ ./sybpytest1.py 

-------------------------------------------------------

9302203

马志元   

1975-02-03

数理逻辑      

-------------------------------------------------------

9302303

马元      

1975-02-03

理论物理      

-------------------------------------------------------

9309203

王海滨   

1975-06-03

数理逻辑      

-------------------------------------------------------

9402203

金力标   

1972-02-03

通信工程         

-------------------------------------------------------

9402208

马娟      

1972-01-03

计算机    

《程序员指南》中的例子(存储过程调用),callproc.py

#!/opt/local/python27/bin/python#coding=utf-8import sybpydbconn = sybpydb.connect(user='mymotif', password='wxwpxh', servername='MYMOTIFVOSTRO145480')# Create a cursor object.cur = conn.cursor()cur.execute("""	create procedure myproc	@int1 int,	@int2 int output	as	begin	   select @int2 = @int1 * @int1	end	""")int_in = 300int_out = sybpydb.OutParam(int())vals = cur.callproc('myproc', (int_in, int_out))print ("Status = %d" % cur.proc_status)print ("int = %d" % vals[1])cur.connection.commit()# Remove the stored procedurecur.execute("drop procedure myproc")cur.close()conn.close()

运行:

$ ./callproc.py 

Status = 0

int = 90000

 

转载于:https://my.oschina.net/u/2245781/blog/636466

你可能感兴趣的文章
纯css3实现的鼠标悬停动画按钮
查看>>
08 comet反向ajax
查看>>
Java程序性能优化
查看>>
onWindowFocusChanged
查看>>
Nutch 是一个开源Java 实现的搜索引擎
查看>>
使用T-SQL找出执行时间过长的作业
查看>>
codeforces 148D之概率DP
查看>>
深度分析 Java 的 ClassLoader 机制(源码级别)(转)
查看>>
段落排版--行间距, 行高(line-height)
查看>>
Wpf控件ListBox使用实例2
查看>>
用仿ActionScript的语法来编写html5——终篇,LegendForHtml5Programming1.0开源库件
查看>>
《随笔记录》20170310
查看>>
CentOS 7 Root用户密码重置 2017-04-02
查看>>
linux下永久添加静态路由
查看>>
Crowbar - SIMILE
查看>>
【转】Loadrunner入门(《软件性能测试过程详解与案例剖析》)
查看>>
hdu1387之queue应用
查看>>
QEMU KVM Libvirt手册(11): Managing Storage
查看>>
mysql总结
查看>>
预定义变量 - PHP手册笔记
查看>>