首页 >数据库 >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