【问题标题】:Update field with no-value更新无值字段
【发布时间】:2017-06-23 09:50:57
【问题描述】:

我在 PostgreSQL 数据库中有一个表。
我正在向该表写入数据(使用 Pythonpsycopg2 进行一些计算,将结果写到该表的特定列中)。

我需要更新该列的一些现有单元格。
到目前为止,我能够在写入这个单个单元格之前删除整个行,因为该行上的所有其他单元格也同时被写回,或者出于同样的原因删除整个列。

现在我不能再这样做了,因为这意味着需要很长的计算时间来重建行或列,以便在某个单元格中写入一些新值。

我知道update 命令。它适用于此。 但是,如果我在某些单元格中有现有值,并且新的计算没有为这些单元格提供更多结果,我想“清除”现有值以使表格与最后一次计算保持同步已经完成了。

有没有简单的方法来做到这一点? update 似乎不起作用(它似乎保留了旧值)。 我再次准确地说我正在使用psycopg2 将内容写入我的表。

【问题讨论】:

  • 显示数据、代码和期望的最终结果。

标签: python sql postgresql psycopg2


【解决方案1】:

您只需在 SQL 中使用值 NULL 更新单元格 - 当您使用 python 中的 None 类型更新列时,psycopg2 会将 NULL 插入数据库。

【讨论】:

  • 如何在 Python 中做到这一点?我想这对我来说会是一团糟,因为我只在值存在时调用写入 DB 的函数。
  • cur.execute("UPDATE tableX (col1, col3) VALUES (%s, %s) WHERE id=%s", (100, None, 123)) 类似这样的东西 - 一个普通的更新语句,这个语句会更新 id=123 的行并将 col1 设置为 100 并从 col3 中删除该值。 col2 不受影响。
猜你喜欢
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多