gpt4 book ai didi

python - 如何只删除 postgres 中的行而不是使用 pandas read_sql_query 方法删除表?

转载 作者:行者123 更新时间:2023-11-29 13:08:08 25 4
gpt4 key购买 nike

我想执行一个操作,我想删除 postgres 中的所有行(但不删除表)并更新其中的新行。我想使用 pandas 的 pd.read_sql_query() 方法:

qry = 'delete from "table_name"'
pd.read_sql_query(qry, conection, **kwargs)

但它抛出错误 'ResourceClosedError: This result object does not return rows.它已自动关闭。'

我可以预料到这一点,因为该方法应该返回空数据帧。但它没有返回任何空数据帧,而只返回上述错误。你能帮我解决一下吗??

最佳答案

我用的是MySql,但是逻辑是一样的:

查询 1:从您的表中选择所有 ID

问题 2:删除所有这些 id

结果是:

Delete FROM table_name WHERE id IN(Select id FROM table_name)

该行不返回任何内容,它只是删除所有具有特殊 ID 的行。我建议仅使用 psycopg 执行命令 - 不使用 pandas。

然后您需要另一个查询来从数据库中获取 smth,例如:

pd.read_sql_query("SELECT * FROM table_name", 连接, **kwargs)

可能(我不使用 pandas 从数据库读取)在这种情况下你会得到带有列名的空数据框

也许您可以通过以下方式组合所有操作:

pd.read_sql_query('''Delete FROM table_name WHERE id IN (Select id FROM table_name); SELECT * FROM table_name''', conection, **kwargs)

请尝试并分享您的结果。

关于python - 如何只删除 postgres 中的行而不是使用 pandas read_sql_query 方法删除表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58518894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com