首页 > 解决方案 > 变量作为具有多个值的数据库表名

问题描述

我正在尝试将 a var(在我的情况下是 guild.id)传递给我的multiexec. 对应的表已经存在于数据库中

for guildID in stored_guilds:
    if self.get_guild(guildID):
        _guildID = str(guildID)
        db.multiexec("INSERT OR IGNORE INTO " + _guildID + " (GuildID, UserID, UserName) VALUES (?, ?, ?)", 
            ((guildID, member.id, member.name) for member in self.get_guild(guildID).members if not member.bot))

我的多执行器定义

def execute(command, *values):
    cur.execute(command, tuple(values))

def multiexec(command, valueset):
    cur.executemany(command, valueset)

错误

_ClientEventTask exception was never retrieved
future: <ClientEventTask state=finished event=on_ready coro=<bound method Bot.on_ready of <lib.bot.Bot object at 0x0000018BABE96F10>> exception=OperationalError('near "825647896535795438": syntax error')>
Traceback (most recent call last):
  ...
  File "C:...\lib\bot\__init__.py", line 81, in update_db
    db.multiexec("INSERT OR IGNORE INTO "+ _guildID +" (GuildID, UserID, UserName) VALUES (?, ?, ?)",
  File "C:\...\lib\db\db.py", line 68, in multiexec
    cur.executemany(command, valueset)
sqlite3.OperationalError: near "825647896535795438": syntax error

标签: pythondatabasesqlite

解决方案


推荐阅读