首页 > 解决方案 > 为什么 INSERT 在 Python SQLite3 中似乎不起作用?

问题描述

所以我的问题如下:我似乎无法将值插入到None之前的行中。假设有 5 列:a、b、c、d、e。e 是主键(设置为autoincrement)。首先,我将 3 列(a、b、c)的值插入到行中。是在插入期间计算的autoincrement,因此自动插入 e 的值。此时,d 的值为None。然后我使用与计算的主键连接的字符串插入到我之前未插入的行列中:d。但是,这个最终插入似乎不起作用。

在第一次插入之后,列 d 的值显示None在该行中(应该如此)。但None即使在第二次插入之后仍然存在。

这是一个片段:

c.execute(f'''INSERT INTO table(a, b, c) VALUES(?,?,?)''', (val_a, val_b, val_c))
c.execute(f'''SELECT * FROM table WHERE b = ('{val_b}')''')
val_d = 'string' + str(primary_key_of_previously_inserted_row)  //accessed via c.fetchall()
c.execute(f'''INSERT INTO table(d) VALUES('{val_d}')''')
conn.commit()
c.execute(f'''SELECT * FROM table WHERE b = ('{val_b}')''')
print(c.fetchall())  // this is where it prints the None which still persists after the second insert
conn.commit()

这里似乎有什么问题?

标签: sqlpython-3.xdatabasesqlite

解决方案


我建议你尝试 Select c.execute(f'''SELECT * FROM table WHERE e = ('{primary_key_of_previously_inserted_row}')''')

因为 e 是您的主要领域,并且是独一无二的。您可能有一条记录,其中 val_b 在您的表中不是唯一的。在这种情况下,它可能正在写入找到的第一个实例?


推荐阅读