假设我有一个数据库,可以添加如下值:
def information(cursor):
a = input("Please define a 'a':")
b = input("Please define a b:")
c = input("Please define a c:")
d = input("Please define a d:")
statement=f'INSERT INTO data VALUES ({a}, "{b}", "{c}", "{d}");'
cursor.execute(statement)
cursor.close()
如果Value已经在表中,我怎么能得到一个好的消息。
我必须说,我对Python并不完全熟悉,尤其是它的SQLite驱动程序是如何工作的。
但是解决方案的要点是有条件地插入,然后得到插入了多少行。在许多SQL实现中,我们可以做一些像SELECT @@ROWCOUNT
这样的事情,但我认为这在SQLite中不起作用。
但我认为这是有效的,它取决于插入失败的唯一键:
INSERT OR IGNORE INTO data VALUES ({a}, "{b}", "{c}", "{d}");
然后使用:
获取行数cursor.rowcount
所以我们可以用这个结果来检查发生了什么。如果为零,则插入失败。
顺便说一句,我相信你目前的实现是开放的SQL注入攻击。您应该在准备好的查询中使用参数。