首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unique约束失败-如果不是unique键,则消息很好

Unique约束失败-如果不是unique键,则消息很好
EN

Stack Overflow用户
提问于 2021-01-26 08:03:25
回答 1查看 45关注 0票数 0

假设我有一个数据库,它可以像下面这样添加值:

代码语言:javascript
复制
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()

如果值已经在表中,我如何获得一条好消息。

EN

回答 1

Stack Overflow用户

发布于 2021-01-26 08:38:27

我必须说,我并不完全熟悉Python,尤其是它的SQLite驱动程序是如何工作的。

但解决方案的要点是有条件地插入,然后获取插入了多少行。在许多SQL实现中,我们可以做类似SELECT @@ROWCOUNT的事情,但我不认为这在SQLite中有效。

但我认为这是可行的,这取决于插入没有唯一的键:

代码语言:javascript
复制
INSERT OR IGNORE INTO data VALUES ({a}, "{b}", "{c}", "{d}");

然后使用以下命令获取行数:

代码语言:javascript
复制
cursor.rowcount

因此,我们可以使用该结果来检查发生了什么。如果为零,则插入失败。

顺便说一句,我认为您当前的实现容易受到注入攻击。您应该在准备好的查询中使用参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65894119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档