【发布时间】:2021-06-09 12:10:40
【问题描述】:
所以,我是数据库的新手,我有一个问题。我首先在互联网上进行了重新搜索,但找不到任何东西,或者实际上我无法正确理解他们在解释什么。在开始我的问题之前,我想说我目前正在以 Python 作为主要语言的 Discord Bot 工作,并且我正在尝试创建一个 per-server-prefix 系统。我已经成功了一次,但格式为.JSON。然后我听说使用.JSON 来保存这种数据实际上并不好所以我搬到了DataBases。现在,我的问题是:
我已将guild_id 和prefix 存储在我的数据库中,如何将其用于per-server-prefix 系统?除了编写代码来存储两个文本之外,我还没有尝试过任何东西。如果有人能向我解释而不只是告诉我代码,我真的很高兴!任何答案将不胜感激
Main.py:
def get_prefix(client, message):
db = sqlite3.connect("main.sqlite")
cursor = db.cursor()
cursor.execute(f"SELECT prefix FROM prefixes WHERE guild_id = {message.guild.id}")
result = cursor.fetchone()
if result is None:
return "/"
else:
client = commands.Bot(command_prefix = get_prefix)
Prefixes.py (COGS):
@commands.command()
@commands.has_permissions(administrator=True)
async def prefix(self, ctx, prefix=None):
db = sqlite3.connect("main.sqlite")
cursor = db.cursor()
cursor.execute(f"SELECT prefix FROM prefixes WHERE guild_id = ?", ctx.guild.id)
result = cursor.fetchone()
if result is None:
sql = ("INSERT INTO prefixes(guild_id, prefix) VALUES(?,?)")
val = (ctx.guild.id, prefix)
await ctx.channel.send(f"{prefix}")
elif result is not None:
sql = ("UPDATE prefixes SET prefix = ? WHERE guild_id = ?")
val = (prefix, ctx.guild.id)
await ctx.channel.send(f"update `{prefix}`")
cursor.execute(sql, val)
db.commit()
cursor.close()
db.close()
这几乎是整个代码。如果您认为有什么需要改变或有任何建议,请在 cmets 中回答!
【问题讨论】:
-
我不完全确定问题出在哪里。据我所知,您的代码应该可以工作。您需要做的就是在
else子句之后返回result。 -
这就是重点,我不知道
else会是什么。正如我所说,我是数据库的新手,我还在学习。所以我问是否有人知道else将如何工作。 -
啊啊啊。在这种情况下,我已经在下面发布了我的答案。
标签: python-3.x sqlite discord.py