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

标签 python pandas postgresql

我想执行一个操作,我想删除 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/

相关文章:

python - 当被调用者的 cumtimes 加起来不等于函数的总 cumtime 时,这意味着什么?

python - 将两个 Pandas 系列减少为一个

python - 尝试将数据帧与分类数据连接时出现意外错误

postgresql - PL/pgSQL 中的 BREAK 语句

ruby-on-rails - Heroku 上的 Rails 应用程序无法连接到 RDS

python - 用 python 计算 pi - 莱布尼茨

python - 使用 elasticsearch-dsl-py 索引和渗透文档

python - 使用 python pandas 将行值转换为列,以将日期字段分配给每个新列

python - 根据最近的日期时间合并/连接数据框到不同的数据框

来自 SELECT WHERE 的 SQL 多条更新记录