是什么阻止用户被插入表中?

时间:2019-04-17 19:29:46

标签: python syntax sqlite

在对项目的保存到数据库的部分进行编码时,我似乎找不到正确的方法来将数据插入表中。 要使变量在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语法”错误。有人能看到我的错误吗?谢谢

1 个答案:

答案 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],)