使用 Pandas read_sql 傳遞 SQL 查詢參數
Pandas 提供了 read_sql
函數用於從 SQL 資料庫中檢索資料。此函數允許向 SQL 查詢傳遞參數,從而實現動態查詢。但是,傳遞參數的方法可能有所不同。
範例中使用了 SQLAlchemy 引擎連接到 PostgreSQL 資料庫。查詢使用 BETWEEN %s AND %s
這種位置參數的方式,能夠正常運作。
然而,問題在於是否可以使用字典傳遞命名參數,例如 :dstart
和 :dfinish
。 Pandas 文件指出這種可能性,但實際操作卻失敗了。
根據 read_sql
文檔,params
參數可以接受列表、元組或字典。 SQL 查詢本身傳遞值的語法也多種多樣,包括 ?
、:1
、:name
、%s
和 %(name)s
。
至關重要的是,支援的語法取決於所使用的資料庫驅動程式。在本例中,驅動程式很可能是 psycopg2。
psycopg2 文件顯示,命名參數使用 %(name)s
風格支持,而不是嘗試使用的 :name
風格。因此,以下程式碼應該可以工作:
<code class="language-python">df = psql.read_sql(('select "Timestamp","Value" from "MyTable" ' 'where "Timestamp" BETWEEN %(dstart)s AND %(dfinish)s'), db, params={"dstart": datetime(2014, 6, 24, 16, 0), "dfinish": datetime(2014, 6, 24, 17, 0)}, index_col=['Timestamp'])</code>
以上是如何使用 Pandas `read_sql` 正確地將命名參數傳遞到 PostgreSQL 資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!