SAP Hana 数据库编程接口 - Python

Python Hana DB 驱动

Python 终于在 Hana 平台上成为一等公民了,可以轻松访问 Hana 数据库。安装 SAP Hana Client 之后,安装目录 hdbclient\hdbcli 下面有三个文件。按照 在python中连接SAP HANA | SAP Blogs 这篇文章的提示,解决 Python 连接 Hana 的驱动问题。

但经在网上搜索,我发现另外一个客户端驱动 PyHDB,貌似也是 SAP 发布的,可以在 Python 3.4 上使用。API 符合 PEP-249 规范。本文基于 PyHDB API。

安装

pip install pyhdb

获取 Connection 对象

需要 host, port, user, password 四个参数。注意端口是 3+实例编号+15,比如实例编号为 00,则端口为 30015。

import pyhdb

def get_connection():
    conn_obj = pyhdb.connect(
        host="192.168.1.100",
        port=30015,
        user="STONE",
        password="pwd"
    )

    return conn_obj

表查询

假设 Hana 数据库上有一 EMP_MASTER 的表,这个数据我是从 sample data 获得的。用 Hana Studio 预览数据如下:

SAP Hana 数据库编程接口 - Python_第1张图片
def get_employees(conn):
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM "STONE"."EMP_MASTER"')
    employees = cursor.fetchall()

    return employees

conn = get_connection()
employees = get_employees(conn)
for employee in employees:
    print (employee)

程序结果如下 (运行环境是 PyCharm):

SAP Hana 数据库编程接口 - Python_第2张图片

参数化查询

def get_employees_male(conn):

    cursor = conn.cursor()
    cursor.execute('select * from "STONE"."EMP_MASTER" where "GENDER"=:1', ['Male'])
    return cursor.fetchall()

conn = get_connection()
employees = get_employees_male(conn)
for employee in employees:
    print (employee)

这样就获得了所有男性的数据。

CRUD 操作,可以参考 PyHDB,不再赘述。

SqlAlchemy 与 Hana DB

使用 SqlAlchemy 连接 Hana DB,也异常简单。安装 sqlalchem-hana 模块:

pip install sqlalchemy-hana

默认情况下,sqlalchemy-hana 使用 hdbcli 驱动,也就是安装 SAP Hana Client 默认提供的驱动。也可以使用刚刚介绍的 pyhdb 驱动,下面是一个简单的测试。主要说明 uri 的写法:

engine = create_engine('hana+pyhdb://username:password@host:port')
from sqlalchemy import create_engine

engine = create_engine('hana+pyhdb://STONE:[email protected]:30015')
with engine.connect() as conn:
    rst = conn.execute('SELECT * FROM STONE.EMP_MASTER')

    for row in rst:
        print (row)

References

SAP HANA and Python? Yes Sir
在python中连接SAP HANA | SAP Blogs
pyhdb 0.2.3
PyHDB on GitHub
SQLAlchemy dialect for SAP HANA
sqlalchemy-hana 0.2.2

你可能感兴趣的:(SAP Hana 数据库编程接口 - Python)