gpt4 book ai didi

python - Sqlite 更新无法正常工作 - python

转载 作者:太空宇宙 更新时间:2023-11-03 12:12:01 25 4
gpt4 key购买 nike

编辑:经过一些测试后,我发现失败的并不是 addpoint 方法。

我正在为 irc 机器人开发一个小游戏。此方法将更新名为“score”的数据库中的分数,只有两个玩家。这是一个sqlite数据库。主要是更新 sql 无法正常工作。

谢谢

def addpointo(phenny, id, msg, dude):
try:
for row in c.execute("select score from score where id = '0'"):
for bow in c.execute("select score from score where id = '1'"):
if int(row[0]) == 3:
phenny.say("Winner is " + dude)
clear("score") # clear db
clear("sap") # clear db
elif int(bow[0]) == 3:
phenny.say("Winner is " + dude)
clear("score") # clear db
clear("sap") # clear db
else:
phenny.say(msg)
s = c.execute("select score from score where id=?", id)
a = int(s.fetchone()[0]) + 1
print a
c.execute("update score SET score =? where id =?", (a, id)) #here i got some prolem
conn.commit()
except Exception:
phenny.say("Error in score. Try to run '.sap clear-score' and/or '.sap clear-sap'")
pass

这就是我创建分数数据库的方式

def createscore():
if not (checkdb("score") is True):
c.execute('''create table score (id int, score int)''')
c.execute('insert into score values (0, 0)')
conn.commit()
c.execute('insert into score values (1, 0)')
conn.commit()

错误信息:参数是不支持的类型

最佳答案

虽然原作者很可能已经离开了,但我想我应该在这里为 future 的 Google 员工(比如我 ^_^)留下一个答案。

我认为这里发生的是以下错误...

ValueError: 参数类型不受支持

...其实是从下面这行来的(和作者说的相反)

s = c.execute("select score from score where id=?", id)

这里的问题是 Cursor.execute 接受查询字符串作为第一个参数(他有权),但是 list tuple,或者 dict 作为第二个参数。在这种情况下,他需要将 id 包装在元组或列表中,如下所示:

s = c.execute("select score from score where id=?", (id,))

列表或元组可以与位置参数一起使用(当您使用问号 ? 作为占位符时)。您还可以使用 dict:key 作为命名参数,如下所示:

s = c.execute("select score from score where id=:id", {"id": id})

关于python - Sqlite 更新无法正常工作 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4741251/

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