【问题标题】:sqlite error: no such column: (and whatever the arguement is)sqlite 错误:没有这样的列:(无论参数是什么)
【发布时间】:2022-11-17 06:42:54
【问题描述】:

所以我正在使用 sqlite 和 discord.py 制作一个不和谐的机器人

那是给出错误的命令:

@bot.command()
@commands.has_permissions(administrator=True)
async def set_ip(ctx, arg=None):
    if arg == None:
        await ctx.send("You must type the IP adress next to the command!")
    elif arg.endswith('.aternos.me') == False:
        await ctx.send('IP must end with .aternos.me')
    elif ctx.guild.id == None:
        await ctx.send("This is a guild-only command!")
    else:
        ipas = None
        id = ctx.guild.id
        conn.execute(f'''DROP TABLE IF EXISTS guild_{id}''')
        conn.execute(f'''CREATE TABLE IF NOT EXISTS guild_{id} (
            ip TEXT NOT NULL
        )''')
        conn.execute(f'''INSERT INTO guild_{id} ("ip") VALUES ({arg})''')
        cursor = conn.execute(f'''SELECT ip FROM guild_{id}''')
        for row in cursor:
            ipas = row[0]
        if ipas == None:
            await ctx.send("Failed to set IP!")
            conn.execute(f'''DROP TABLE IF EXISTS guild_{id}''')
        else:
            await ctx.send(f"Your guild ip is now -> {ipas}")
            print("An ip has been set!")

我试图创建一个表,如果不存在名称为 guild_(和 discord 服务器 ID) 并检查它是否已设置

错误是: OperationalError:没有这样的列:(arg)

sqlite 给出了这个错误,我无法弄清楚,请帮助我。

【问题讨论】:

  • 与您的实际问题分开,但为什么要为每个行会创建一个单独的表?一个更好的设计似乎有一个单一的guild表。通常,我不希望应用程序经常创建和删除表。

标签: python sql python-3.x sqlite discord.py


【解决方案1】:

您将列名作为字符串传递:

conn.execute(f'''INSERT INTO guild_{id} ("ip") VALUES ({arg})''')

应该:

conn.execute(f'''INSERT INTO guild_{id} (ip) VALUES ({arg})''')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-09
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多