2017-04-06 56 views
0

我目前正在遷移使用SQLAlchemy的現有Python程序,但幾乎完全通過使用SQLAlchemy引擎在Pandas數據框中使用(例如,pandas to_sql)。目前用於創建引擎的連接字符串是另一個數據庫(即MySQL)的連接字符串,訪問數據庫(類似於Postgres模式)很容易完成。我如何最好地指定給定引擎中的模式(而不僅僅是包含它們的Postgres數據庫)?有沒有辦法在SQLAlchemy連接字符串中指定Postgres模式?

編輯:有人似乎已經將此問題標記爲重複。不是這樣。我不想通過使用Sessions自動生成查詢;我正在尋找創建連接字符串,以便創建用於Pandas的to_sql函數的SQLAlchemy引擎。

+0

很好啊,是我不好不正確地重複這一點,雖然你在問一個非常類似的問題。真正的答案是:您連接到數據庫,而不是模式,因此您不會將它傳遞給連接字符串。但是:['DataFrame.to_sql()'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html)將「default」schema用作關鍵字參數,如果底層數據庫支持模式。您的數據庫模式類比是誤導性的。模式將對象分隔到數據庫中的名稱空間*,並且用戶可以訪問數據庫中不同模式中的所有對象(給定燙髮)。 –

+0

另外,你有沒有考慮使用預連接的引擎,而不是連接url字符串作爲'to_sql()'的'con'參數。您可以享受通話之間連接池等的好處。此外,如果使用引擎實例而不是連接字符串,則鏈接副本實際上是有效的,因爲您可以然後例如實現設置搜索路徑的連接事件偵聽器。 –

回答

0

可以使用火焰用大火之前,從SQL鍊金術

from blaze import data 
from sqlalchemy import MetaData 
ds = data(MetaData('postgresql://localhost/test', schema='my_schema')) 

連接到PostgreSQL和元數據,通過安裝:

pip install blaze 
相關問題