Python
如何連接並操作 Aws
上 PB
級雲數據倉庫 Redshift
一、簡介
Amazon Redshift 是一個快速、可擴展的數據倉庫,可以簡單、經濟高效地分析數據倉庫和數據湖中的所有數據。
Redshift 通過在高性能磁盤上使用 Machine Learning、大規模並行查詢執行和列式存儲可提供比其他數據倉庫快十倍的性能。
您可以在幾分鍾內設置和部署新的數據倉庫,並在 Redshift 數據倉庫中對 PB 級數據,以及對在 Amazon S3 上構建的數據湖中的 EB 級數據運行查詢。
二、連接 RedShift
這里使用的是 postgres
的驅動,原因是:redshift
數據倉庫是 aws
基於 postgres
二次開發的衍生產品。
注:這里需要用到 orator
庫,可以運行命令 pip3 install orator
安裝。
from orator import DatabaseManager
config = {
'postgres': {
'driver': 'postgres',
'host': 'xxxxxx-cluster.xxxxx.xxxx.redshift.amazonaws.com',
'port': '5439',
'database': 'db_name',
'user': 'root',
'password': 'root',
'prefix': '',
'log_queries': true
}
}
db = DatabaseManager(config)
三、基本操作
這里主要介紹最基本的增刪改查操作,想要了解更高級的操作可以查看官方文檔:傳送門
# 查詢
row = db.table('users').first()
# 新增
db.table('users').insert({
'email': 'foo@bar.com',
'votes': 0
})
# 更新
db.table('users').where('id', 1).update({'votes': 1})
# 刪除
db.table('users').where('age', '<', 25).delete()
四、相關文檔
五、總結
因為 aws
官方只提供了 JDBC Drvier
, 所以就在網上搜索連接 RedShift
的 Python driver
,但是 一直沒有找到比較好用的 Drvier
。偶然一次在 Aws
的官方文檔了解到 RedShift
是基於 postgres
二次開發的衍生產品,所以就嘗試用 postgres driver
,結果還真連接上來。 這樣就可以像操作 postgres
或 mysql
一樣操作 RedShift
。