在python中使用pandas,我需要能够从数据帧生成高效的查询到postgresql。不幸的是DataFrame.to\u sql(…)只执行直接插入,我希望进行的查询相当复杂。在
理想情况下,我想这样做:
WITH my_data AS (
SELECT * FROM (
VALUES
<dataframe data>
) AS data (col1, col2, col3)
)
UPDATE my_table
SET
my_table.col1 = my_data.col1,
my_table.col2 = complex_function(my_table.col2, my_data.col2),
FROM my_data
WHERE my_table.col3 < my_data.col3;
然而,要做到这一点,我需要将我的dataframe转换成一个普通的values语句。当然,我可以重写自己的函数,但过去的经验告诉我,编写函数来转义和清理sql永远不应该手动完成。在
我们使用的是SQLAlchemy,但是绑定参数似乎只适用于有限数量的参数,理想情况下,我希望在C-speed下将数据帧序列化为文本。在
那么,有没有一种方法,通过pandas或SQLAlchemy,有效地将我的dataframe转换成values子语句,并将其插入到查询中?在
您可以使用^{} 。
例如,给定这个设置
python代码
^{pr2}$将
my_table
更新为或者,可以使用} 。在
psycopg2
来生成SQL。format_values
中的代码几乎完全复制自source code for ^{收益率
相关问题 更多 >
编程相关推荐