【发布时间】:2022-06-18 23:50:28
【问题描述】:
我有一个 pandas 数据框,我想将它作为临时表传递给 psycopg2 execute 语句。这应该很简单:
伪代码...
string = """
with temporary_table (id, value) as (values %s)
select * from temporary_table
"""
cur.execute(string, df)
其中df 只是一个带有id 和value 列的数据框。
使用什么语法可以将这些数据作为临时表传入并在查询中使用?
【问题讨论】:
-
A
df是 Panda 对象,不能直接用作execute中的值源。您将需要使用to_sql。可能是两部分脚本:1)创建临时表 2)使用to_sql在同一会话中填充它。否则,您将需要从df中提取数据,例如dict并使用它。 -
@AdrianKlaver 是的,对不起,我看到了混乱,但我知道将 pandas 数据帧传递给 sql 没有意义......我目前正在做的方式是将数据帧转换为元组的元组,将其转换为字符串,然后使用字符串剪辑删除第一个和最后一个
(和),并将字符串作为变量传递给%s,我只是想知道如果有更优雅的方法,如果有,请扩展您的答案。
标签: psycopg2