gpt4 book ai didi

python - 多个占位符 SQLite Python 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 16:35:27 24 4
gpt4 key购买 nike

我正在尝试从 Track TABLE 更新 TrackId 的单价。 UnitPrice 和 TrackId 由用户输入提供参数。我目前收到参数数量错误:

    Traceback (most recent call last):
File "HW4.py", line 48, in <module>
conn.execute("UPDATE Track set UnitPrice = ? WHERE TrackId = ?", (n_price,t_id))
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

这是我的代码:

track_id = raw_input('Enter Track ID\n')
t_id = (track_id,)
cur = conn.execute("SELECT T.UnitPrice FROM Track T WHERE T.TrackId = ?", t_id)
for row in cur:
print "Unit Price: ", row[0]

new_price = raw_input('Enter New Price\n')
n_price = (new_price,)
conn.execute("UPDATE Track set UnitPrice = ? WHERE TrackId = ?", n_price, t_id)
conn.commit
print "Total number of rows updated: ", conn.total_changes

cur = conn.execute("SELECT T.UnitPrice FROM Track T WHERE T.TrackId = ?", t_id)
for row in cur:
print "Unice Price: ", row[0]

我猜测这是我如何将 n_price 和 t_id 放入 ? 的语法错误。占位符。

最佳答案

您需要将参数作为单个可迭代对象传递,例如列表或元组,但您将n_price参数包装在另一个嵌套的参数中元组:

n_price = (new_price,)  # this is a tuple
conn.execute("UPDATE Track set UnitPrice = ? WHERE TrackId = ?",
(n_price, t_id)) # wrapping in another tuple

现在您传入 ((new_price,), t_id),但第一个元组不是受支持的类型。

将您的参数一起传递到一个元组中:

params = (new_price, t_id)
conn.execute("UPDATE Track set UnitPrice = ? WHERE TrackId = ?", params)

或使用

conn.execute("UPDATE Track set UnitPrice = ? WHERE TrackId = ?", (new_price, t_id))

关于python - 多个占位符 SQLite Python 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37262955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com