Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
7,065

     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 HANALinux环境下的客户端(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是非常方便, 几行代码就可以完成数据库相关的操作.

[本文的测试案例所使用的SAP HANA版本为SAP HANA SPS7 Revision 70.00]

想获取更多SAP HANA学习资料或有任何疑问,请关注新浪微博@HANAGeek!我们欢迎你的加入!

转载本文章请注明作者和出处http://scn.sap.com/community/chinese/hana/blog/2014/04/02/%E5%9C%A8python%E4%B8%AD%E8%BF%9E%E6%8E%A5...,请勿用于任何商业用途。

1 Comment