首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Discord.py使用mysql-connector将值插入数据库

Discord.py使用mysql-connector将值插入数据库
EN

Stack Overflow用户
提问于 2019-12-05 05:46:26
回答 1查看 3.2K关注 0票数 0

我试图通过用户输入将值插入到数据库中。以下代码无需用户输入即可运行:

代码语言:javascript
运行
复制
mycursor = mydb.cursor()
sql = "INSERT INTO DiscordData (UserID, Code) VALUES (%s, %s)"
val = ("1234", "foobar")
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "record inserted.")

但是,当我将代码传递到命令处理程序以供用户输入时,数据并未插入:

代码语言:javascript
运行
复制
@bot.command()
async def foo(message, arg):
    if isinstance(message.channel, discord.DMChannel):
        await message.send(arg)
        mycursor = mydb.cursor()
        sql = "INSERT INTO DiscordData (UserID, Code) VALUES (%s, %s)"
        val = ("123", arg)
        await mycursor.execute(sql, val)
        await mydb.commit()
        print(mycursor.rowcount, "record inserted.")
EN

回答 1

Stack Overflow用户

发布于 2019-12-06 00:48:51

我已经在我的一些项目中使用过mysql和discord机器人,所以我可以在这里给你一些见解。

首先,您不应该在mycursor.executemydb.commit()调用中使用await。

其次,我编写代码的方式有点不同,尽管这是值得的,但我知道它应该可以工作。我有一个SQLCmds.py文件,它被导入到主要的discord bot python文件中。在SQLCmds.py内部是将新信息放入MySQL数据库所需的所有函数。因此,不是在不一致机器人的代码中调用SQL函数,而是调用一个与顶层代码类似的函数,并传递机器人拥有的任何信息。

举个例子,下面是一个禁用单词检查:

代码语言:javascript
运行
复制
def checkBannedWord(banned_word):
    mycursor.execute("SELECT filtered_to FROM banned_word_table WHERE banned_word = '"+str(banned_word).lower()+"'")
    result = mycursor.fetchall()
    if result != []:
        return result[0][0]
    else:
        return False

在discord机器人的代码中,您将能够checkBannedWord(banned_word)并调用这个SQL函数。这将使整个过程对您来说更加简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59185094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档