首页 > 数据库 > mysql教程 > 如何使用 Pandas `read_sql` 正确地将命名参数传递到 PostgreSQL 数据库?

如何使用 Pandas `read_sql` 正确地将命名参数传递到 PostgreSQL 数据库?

Susan Sarandon
发布: 2025-01-18 07:27:08
原创
813 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板