在对项目的保存到数据库的部分进行编码时,我似乎找不到正确的方法来将数据插入表中。
要使变量在SQLite3中起作用,应该更改/修复什么?
旁注-我要插入的元素直接来自列表。变量sqluserrequest
表示列表的单个元素,格式为字符串。
现在,我收到此语法错误:
line 42, in updatetable
""", (sqluserrequest,))
OperationalError: near "VALUES": syntax error
在本文中,我尝试直接从列表I.E.中调用所需的元素。 usertags[y]
,其中y递增以从列表中收集每个元素,该元素可追溯到:
line 33, in updatetable
VALUES(?)""", (usertags[y]))
ValueError: parameters are of unsupported type
我也尝试过将元组更改为列表文字,但是效果不大:
line 42, in updatetable
""", [sqluserrequest])
sqlite3.OperationalError: near "VALUES": syntax error
我也在研究字符串格式,但这似乎无济于事。
sqluserrequest =要保存的discordid(列表元素)
这是SQL脚本:
cursor.executescript("""
CREATE TABLE Users(
discordid VARCHAR (37) PRIMARY KEY,
time VARCHAR (5)
);
""") #create
update.execute("""
INSERT INTO Users(discordid)
VALUES(?)""", (sqluserrequest,)) #insert
update.execute("""
UPDATE Users
SET time = time + 1
WHERE name = VALUES(?)
""", (sqluserrequest,)) #update
光标在它们之间切换,但是据我所知,它不会影响程序,因为它是在不同的连接点完成的。
该脚本的目的是在discordid中保存单个字符串,并将与discord id对应的元素时间更新1。 通过更改该变量,我上面仅收到了SQL错误,但是该程序最接近工作的是这些“接近VALUES语法”错误。有人能看到我的错误吗?谢谢
答案 0 :(得分:0)
您在这里有SQL语法错误:
update.execute("""
UPDATE Users
SET time = time + 1
WHERE name = VALUES(?)
""", (sqluserrequest,)) #update
您应该只说WHERE name = ?
对于此错误:
line 33, in updatetable
VALUES(?)""", (usertags[y]))
ValueError: parameters are of unsupported type
您传递的SQL参数错误。它必须是一个元组(或列表),但是您只需在parethese中输入一个值即可。指定具有一个项目的元组的权利是带有附加逗号的(usertags[y],)
。