1. 場景描述
使用python連接greenplum或者postgresql。
2. 解決方案
2.1 真實代碼
2.1.1 調用類
import dbgp as dbgp
# 執行
def execGP(params):
sql = params.get("sql")
# 從數據庫獲取數據
try:
data = dbgp.queryGp(sql)
except IndexError:
return sql
except KeyError:
return sql
except ValueError:
return sql
except Exception:
return sql
if data.empty:
return "exception:無數據,請確認后重試"
if __name__ == '__main__':
paramss = dict(
sql="select COALESCE(empno,0) as empno,COALESCE(mgr,0) as mgr from test_emp")
execGP(paramss)
2.1.2 Gp數據庫連接類
import psycopg2
def queryGp(sql):
## 連接到一個給定的數據庫
conn = psycopg2.connect(dbname="db-laowang", user="laowang", password="laowang123",port="5432", host="10.192.168.10", client_encoding="UTF-8")
df = pd.read_sql(sql, con=conn)
## 關閉數據庫連接
conn.close()
return df
2.2 代碼說明
(1)調用類中異常的返回比較特殊,只指定Exception的話,其他的幾種異常還捕獲不到。
(2)psycopg2的安裝就不再特別說明了,有網絡的話可以直接在線安裝,無網絡的話可以參考下我的另一篇博客(python無網安裝psycopg2)。
(3)數據庫的連接配置適用於Greenplum和postgresql。