检查sqlite3 python数据是否存在

时间:2016-12-21 21:39:17

标签: python database sqlite

这是我的代码:

import sqlite3

def delete_product(data):
    with sqlite3.connect("main.db") as db:
        cursor = db.cursor()
        sql = "delete from Products where Name=?"
        if cursor.rowcount <= 0:
            print("The product {0} does not exist" .format(name))
        if cursor.rowcount > 0:
            cursor.execute(sql,data)
            db.commit()
            print("The product {0} has been delted successfully" .format(name))

if __name__ == "__main__":
    name=input("Enter the name of the product you want to delete: >>")
    data=(name,)
    delete_product(data)

我想检查数据库中是否存在名称,如果存在,则删除它。如果它不存在则打印出错误。任何人都可以帮助我找出问题所在

1 个答案:

答案 0 :(得分:1)

关于游标,Python sqlite3 documentation表示:

  

根据Python DB API Spec的要求,如果没有对游标执行executeXX(),则rowcount属性为“-1”

定义游标变量而不执行任何执行命令。因此,cursor.rowcount将为-1,cursor.rowcount <= 0将始终为真。

也许你打算放行

cursor.execute(sql,data)
在第一次cursor.rowcount检查之前