【发布时间】:2023-01-20 06:55:33
【问题描述】:
我希望表最多有三行,所以一旦表有 3 行,它应该删除最旧的行(rowid 1),然后添加新行。如果表还不存在或未达到 3 行,它将正常创建记录。除了删除第一行外,一切正常。尽管也没有错误反馈,并且当在数据库浏览器中执行命令“执行 SQL”时它运行良好,但从我的 IDE 运行时它就不起作用了。新记录是在已有的三个记录之上创建的,而不是在删除第一个记录后添加为第三个记录。
cursor.execute("SELECT count(*) from TableOne")
searchResults = cursor.fetchone()
NoOfRows=searchResults[0]
if NoOfRows ==3:
cursor.execute("DELETE FROM TableOne WHERE rowid=1")
connection.close()
CreateNew()
else:
CreateNew()
请注意,在此代码之前建立了与数据库的连接,并且“CreateNew”是在表中创建新记录的函数。另外,我试过:
Num=1
cursor.execute("DELETE FROM TableOne WHERE rowid=?",[Num])
只是为了得到相同的结果。
【问题讨论】:
-
这回答了你的问题了吗? SQLite delete query not working?
-
我会考虑基于触发器的解决方案。
-
@jarlh 他们不只是缺少
commit()吗? -
@JonSG,也许吧。即使其他人插入值(不记得 3 行规则的人),基于触发器的解决方案也会起作用。
标签: python sql database sqlite sqlite3-python