马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Python是一种简单方便的脚本语言, 在文本处理及网络编程方面有强大的功能. 尤其是在Linux环境下, 因为各种发行版本的Linux都会自带python, 所以使用比较广泛. 对于某些简单的后台批量数据处理任务,如果使用python来访问SAP HANA, 代码量通常比java小得多,并且调试运行也更方便. SAP HANA本身的一些测试任务也是由python来完成的. SCN上有一篇博客”SAP HANA and Python? Yes Sir! “(http://scn.sap.com/community/developer-center/hana/blog/2012/06/08/sap-hana-and-python-yes-sir)介绍了在windows环境下使用python访问SAP HANA的一个Demo, Linux平台稍微有些不同, 本文介绍在Linux环境下如何使用python来访问SAP HANA. 一 环境的配置 首先需要SAP HANA在Linux环境下的客户端(SAP_HANA_CLIENT),下载解压缩之后的文件列表如下:
执行./hdbinst 按提示安装客户端. 默认安装路径/usr/sap/hdbclient. 安装之后的文件列表如下:
安装完毕之后,会发现存在一个Python文件夹. 这是SAP HANA CLIENT自带的Python. 自带的这个Python现在也是无法连接SAP HANA的, 还需要拷贝几个文件. 将hdbcli目录下的dbapi.py, __init__.py, resultrow.py三个文件拷贝到/usr/sap/hdbclient/Python/lib/python2.6目录下,同时把pyhdbcli.so这个文件也拷贝到/usr/sap/hdbclient/Python/lib/python2.6目录下. 然后执行hdbclient自带的Python(/usr/sap/hdbclient/Python/bin/python)
一般来说只要import dbapi的时候不报错, 环境就配置好了. 不过每次都需要用hdbclient自带的Python似乎有点麻烦, 因为Linux一般自带了python的, 能否让二者集成到一起呢, 使用Linux系统自带的Python连接SAP HANA, 听起来比较cool. 根据上面的过程启发, 要让Python连接HANA实际上关键的就是那四个文件, 关键是把这四个文件拷贝到Linux系统自带Python的什么地方去? 理清楚这个关系, 后面对于新主机访问SAP HANA就不再需要安装hdbclient, 在需要的地方,拷贝这四个文件过去就行了. 执行whereis python查找python的位置(测试环境SUSE Linux 11 x86_64 sp2) python: /usr/bin/python2.6 /usr/bin/python /usr/lib64/python2.6 /usr/lib64/python /usr/bin/X11/python2.6 /usr/bin/X11/python /usr/local/bin/python /usr/local/bin/python2.7-config /usr/local/bin/python2.7 /usr/local/lib/python2.7 /usr/include/python2.6 /usr/share/man/man1/python.1.gz 会发现python相关的路径有很多个,究竟把’pyhdbcli.so’等文件放到哪个地方取决于python所使用的库文件路径. 在笔者的机器上, 经尝试发现把dbapi.py, __init__.py, resultrow.py, pyhdbcli.so这四个文件全部拷贝到/usr/local/lib/python2.7 路径下,然后Linux系统自带的python同样可以连接到SAP HANA, 这样就不需要再次装hdbclient了, 不过这跟Linux发行版与python的版本有一定的关系. hdbclient中带了一个Python当然是希望用户用hdbclient中的Python, 本Blog中介绍的方法是笔者自己试出来的,是否需要使用, 读者自行斟酌. 二 代码示例
- #import the database connect api
- import dbapi
- #argument
- serverAdress='<your IP>'
- serverPort=<port>
- userName='<username>'
- passWord='<password>'
- #connect to hana database
- conn=dbapi.connect(serverAdress,serverPort,userName,passWord)
- #query
- query="select idno,name FROM WEIYY_TEST.PTAB1"
- cursor=conn.cursor()
- try:
- ret=cursor.execute(query)
- ret=cursor.fetchall()
- for row in ret:
- for col in row:
- print col,
- print
- except Exception,ex:
- print ex
- #insert data
- query="insert into WEIYY_TEST.PTAB1(IDNO,NAME) values('111','hello,world')"
- try:
- ret=cursor.execute(query)
- except Exception,ex:
- print ex
- #close connection and cursor
-
- conn.close()
- cursor.close()
以上代码首先查寻数据表,然后插入一条新记录,结果如下图所示:
当我们再次执行的时候,结果如下:
显示出之前插入的数据了,在异常处理中显示出一个主键冲突的错误. 可以看出,使用python连接访问SAP HANA是非常方便, 几行代码就可以完成数据库相关的操作.
|