首頁 >資料庫 >mysql教程 >如何使用 Pandas `read_sql` 正確地將命名參數傳遞到 PostgreSQL 資料庫?

如何使用 Pandas `read_sql` 正確地將命名參數傳遞到 PostgreSQL 資料庫?

Susan Sarandon
Susan Sarandon原創
2025-01-18 07:27:08814瀏覽

How to Correctly Pass Named Parameters with Pandas `read_sql` to a PostgreSQL Database?

使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn