Python使用jdbc對openGauss數據庫進行操作(一)
說在前面
研究了一上午寫了這么一個基礎的操作幫助文檔,之所以用python僅僅是因為喜歡用,才發現openGauss還沒提供python直接使用的驅動,使用psycopg2就會出現加密認證錯誤的問題,修改起來極為麻煩果斷放棄,網上又恰好沒有可以直接照抄的文檔,於是研究了半天總算搞出了眉目。基本思想就是在python里使用jar包,目前openGuass發布了基於jdbc的openGauss Connectors,剛好可以拿來用,再結合java幫助文檔就能實現python連接使用openguas了。
基本配置
- openGauss:1.1.0
- Python:3.8
- JDK:1.8
事前准備
openGauss Connectors下載
- 下載地址:https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/arm/openGauss-1.1.0-JDBC.tar.gz
- 需要注意下載版本要和安裝的相符,我實在華為ecs上安裝的opengauss1.1.0,所以要下載openeuler_arrchx64 jdbc_1.1.0版本
安裝python庫
- 先安裝jpype1
- 再安裝jaydebeapi
pip install jpype1
pip install jaydebeapi
- 這樣就准備完了,java安裝就默認都有了
具體步驟
1.配置參數
-
driver:Driver.class所在位置(org.postgresql.Driver)
-
jarFile:jar包所在位置(D:\openGauss-1.1.0-JDBC\postgresql.jar)
-
url:jdbc:<數據庫類型[postgresql]>://
: /<數據庫名> -
user:數據庫用戶名
-
password:密碼
2.導入第三方庫jaydebeapi
import jaydebeapi
3.創建連接
conn = jaydebeapi.connect(driver,url,[user,password],jarFile)
4.對數據庫進行操作
- 獲取游標:curs = conn.cursor()
- 拼接SQL語句:sqlStr = 'select {} from {} where {}'.format(value, tableName, condition)
- 執行SQL語句:curs.execute(sqlStr)
- 獲取查詢返回結果:result = curs.fetchall()/result = curs.fetchone()
- 釋放游標:curs.close()
- 如果不打算繼續操作數據庫后記得關閉連接:conn.close()
使用示例
import jaydebeapi
url = 'jdbc:postgresql://122.9.1.237:26000/dm'
user = 'liming'
password = 'Peter991213'
driver = 'org.postgresql.Driver'
jarFile = 'D:\openGauss-1.1.0-JDBC\postgresql.jar'
conn = jaydebeapi.connect(driver,url,[user,password],jarFile)
curs=conn.cursor()
sqlStr = 'select * from usr'
curs.execute(sqlStr)
result=curs.fetchall()
print(result)
curs.close()
conn.close()
- 結果