【问题标题】:SQL UPDATE doesn't update (PYTHON)SQL UPDATE 不更新 (PYTHON)
【发布时间】:2021-01-16 20:07:54
【问题描述】:

我在通过用户输入更新表中已有的值时遇到了一些问题。当我运行程序时,它会打印出一条声明,说明该项目已成功更新,但它不会更改任何值。 任何帮助都会很棒,因为我的代码似乎没有任何错误,而且我已经坚持了一段时间了。

    elif option == "4":
        sqlite3.connect('program.db')
        inp_ID = int(input("Enter the ID of the item you want to update: "))
        itemName = input("Enter New Item Name: ")
        itemPrice = input("Enter the items price: ")
        itemStock = input("Enter the stock amount of the item: ")
        itemDescription = input("Enter a description for the item: ")

        updateSQL = "UPDATE items SET itemName = ?, itemPrice = ?, itemStock = ?, itemDescription = ? WHERE " \
                    "itemID = ? "
        conn.execute(updateSQL, (inp_ID, itemName, itemPrice, itemStock, itemDescription))
        conn.commit()
        print("Item " + itemName + " has been updated.")

HERE IS COMMAND LINE OF WHEN THE PROGRAM IS RUN

【问题讨论】:

  • 您将inp_ID 关联到查询中的第一个占位符(?),即itemName。而是将其移到参数的末尾。

标签: python sql sqlite


【解决方案1】:

您传递给execute 的参数顺序不正确,因此没有匹配的行。

conn.execute(
    "UPDATE items SET itemName = ?, itemPrice = ?, itemStock = ?, itemDescription = ? WHERE itemID = ? ",
    (
        itemName,
        itemPrice,
        itemStock,
        itemDescription,
        inp_ID,
    ),
)

很可能是您正在寻找的。​​p>

您还可以使用命名占位符使事情更易于管理。

conn.execute(
    "UPDATE items SET itemName = :name, itemPrice = :price, itemStock = :stock, itemDescription = :desc WHERE itemID = :id",
    {
        "name": itemName,
        "price": itemPrice,
        "stock": itemStock,
        "desc": itemDescription,
        "id": inp_ID,
    },
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2015-11-03
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多