sqlite3.OperationalError:“s”附近:语法错误

我正在制作一个不和谐的机器人。我尝试使用 SQLite3 数据库来增加我的机器人的经济性。但是当我创建专栏时出现错误:


cursor.execute(f"INSERT INTO users VALUES ('{member}', {member.id}, 30, 0, 0, 1, {guild.id})")

sqlite3.OperationalError: near "s": syntax error

而且,这是代码:


@client.event

async def on_ready():

    cursor.execute("""CREATE TABLE IF NOT EXISTS users (

        name TEXT,

        id INT,

        cash BIGINT,

        rep INT,

        xp INT,

        lvl INT,

        server_id INT

    )""")


    for guild in client.guilds:

            for member in guild.members:

                if cursor.execute(f"SELECT id FROM users WHERE id = {member.id}").fetchone() is None:

                    cursor.execute(f"INSERT INTO users VALUES ('{member}', {member.id}, 30, 0, 0, 1, {guild.id})")

                else:

                    pass


        connection.commit()


呼如林
浏览 1555回答 1
1回答

慕工程0101907

代码注入错误!member考虑一下如果字符串化是会发生什么Foo's Bar。你最终会执行INSERT INTO users VALUES ('Foo's Bar...                     -- ^ Syntax error我相信cursor.execute(f"SELECT id FROM users WHERE id = {member.id}") cursor.execute(f"INSERT INTO users VALUES ('{member}', {member.id}, 30, 0, 0, 1, {guild.id})")应该cursor.execute("SELECT id FROM users WHERE id = ?", ( member.id, )) cursor.execute("INSERT INTO users VALUES (?, ?, 30, 0, 0, 1, ?)",    ( str(member), member.id, guild.id ) )
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python