唯一约束失败-如果不是唯一键,则消息很好



假设我有一个数据库,可以添加如下值:

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注入攻击。您应该在准备好的查询中使用参数。

最新更新