【发布时间】:2021-04-22 09:21:29
【问题描述】:
当我运行这个命令/查询时,并不是每个人都被添加到数据库中,只有少数成员被添加。我尝试查看成员的“状态”是否重要,但事实并非如此
@client.event
async def on_ready():
print("Bot is Ready")
guild = client.get_guild(GUILD_NUM)
print(f"{guild}")
memberList = guild.members
print(memberList)
for m in memberList:
c.execute(f"""INSERT INTO dodos
VALUES ('{m.id}',0,0,0,0,0,0,0,0,0,0,0,0,0)
""")
conn.commit()
print(f"Adding {m} into database as {m.id}")
c.execute(f"""SELECT *
FROM dodos
WHERE id = {m.id}
""")
conn.commit()
print(c.fetchall())
代码:
【问题讨论】:
-
这里
c和conn有什么区别?你只提交conn -
conn 是我的 sqlite3 连接,c 是 conn.cursor()
-
可能值得用 SQLAlchemy 清理它并使用对象来表示您的表。然后你可以用
conn.add(...)代替原始的 SQL 语句。这可能最终会解决您的问题,但如果不尝试在循环执行之外查询并查看插入是否有效 -
最好将 ID 存储为字符串,然后在传递给 Discord.py 时将其转换为 int
-
您不应该添加所有成员。使用
on_message和on_member_join添加它们。这意味着您可以为自我机器人或忘记不和谐的人使用更少的存储空间。
标签: sql python-3.x sqlite discord.py