这是我的代码:
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)
我想检查数据库中是否存在名称,如果存在,则删除它。如果它不存在则打印出错误。任何人都可以帮助我找出问题所在
答案 0 :(得分:1)
关于游标,Python sqlite3
documentation表示:
根据Python DB API Spec的要求,如果没有对游标执行executeXX(),则rowcount属性为“-1”
定义游标变量而不执行任何执行命令。因此,cursor.rowcount
将为-1,cursor.rowcount <= 0
将始终为真。
也许你打算放行
cursor.execute(sql,data)
在第一次cursor.rowcount
检查之前?