【问题标题】:How to set variable if column is empty? [closed]如果列为空,如何设置变量? [关闭]
【发布时间】:2020-11-22 18:02:59
【问题描述】:

所以我有一个变量,我只想在表中的确切列为空时将其设置为 0。我试过了

conn = sqlite3.connect('ProductivityData.db')
c = conn.cursor()
if c.execute("SELECT LENGTH(xp_all) FROM graph") == -1:
    xp = 0
else:
    c.execute("SELECT * FROM graph")
    xp = c.fetchone()
conn.commit()
conn.close()

graph是一个表,xp_all是这个表中的一列)

肯定它没有意义并且不起作用。基本上,我想做这样的事情:

if xp_all is empty:
    xp = 0
else:
    xp = the last item from xp_all

我该怎么做?也许我可以在 xp_all 中添加 0 作为第一项,但是如何?

【问题讨论】:

  • 你说的列是空的是什么意思?
  • 我不知道我应该怎么称呼它,但我的意思是表格内的东西,可以是文本、blob 等......也许它被称为行?空,我的意思是里面什么都没有,我没有插入任何东西
  • 如果您无法用文字解释,请通过以表格格式发布示例数据来澄清。

标签: python sql sqlite


【解决方案1】:

数据库列中的“空”值为NULLs。

您可以像这样更新这些值

UPDATE graph SET xp_all = 0 WHERE xp_all IS NULL;

但是最好在建表的时候给列设置一个默认值

CREATE TABLE graph (..., xp_all INTEGER DEFAULT 0, ...);

或者您可以指定该列不接受NULL 值,在这种情况下不提供值将导致IntegrityError

CREATE TABLE graph (..., xp_all INTEGER NOT NULL, ...);

在某些数据库中,您可以 ALTER 现有表上的 age 列采用默认值。这对 sqlite 不起作用,您需要创建一个具有正确设置的新表,将旧表的数据迁移到新表,然后 DROP 旧表并用旧表的名称重命名新表

【讨论】:

    猜你喜欢
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 2020-08-07
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多