最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

在python中连接SAP HANA

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-29 17:19:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

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



楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-30 01:23

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表