SAP Hana 數(shù)據(jù)庫編程接口 - Python

Python Hana DB 驅動

Python 終于在 Hana 平臺上成為一等公民了,可以輕松訪問 Hana 數(shù)據(jù)庫。安裝 SAP Hana Client 之后,安裝目錄 hdbclient\hdbcli 下面有三個文件。按照 在python中連接SAP HANA | SAP Blogs 這篇文章的提示,解決 Python 連接 Hana 的驅動問題。

但經(jīng)在網(wǎng)上搜索,我發(fā)現(xiàn)另外一個客戶端驅動 PyHDB,貌似也是 SAP 發(fā)布的,可以在 Python 3.4 上使用。API 符合 PEP-249 規(guī)范。本文基于 PyHDB API。

安裝

pip install pyhdb

獲取 Connection 對象

需要 host, port, user, password 四個參數(shù)。注意端口是 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 數(shù)據(jù)庫上有一 EMP_MASTER 的表,這個數(shù)據(jù)我是從 sample data 獲得的。用 Hana Studio 預覽數(shù)據(jù)如下:

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)

程序結果如下 (運行環(huán)境是 PyCharm):

參數(shù)化查詢

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)

這樣就獲得了所有男性的數(shù)據(jù)。

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:pwd@192.168.1.100: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

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。