【发布时间】:2021-09-30 08:21:16
【问题描述】:
我正在尝试使用 discord.py 和 sqlite3 作为我的数据库制作一个迷你游戏机器人,但我遇到的问题是,当我使用命令 !deathjoin 时,它首先检查执行该命令的用户是否已经在数据库使用他/她的不和谐 ID,然后将该人添加到数据库中,但是什么时候到达
cursor.execute("""SELECT id FROM DEATHROLL WHERE id=?""",(ide,)) #ide=person's id
它停止运行,更烦人的是,当我通过在前后打印 id 来测试它是否有任何语法错误时
cursor.execute("""SELECT id FROM DEATHROLL WHERE id=?""",(ide,))
运行它只在之前打印它
cursor.execute("""SELECT id FROM DEATHROLL WHERE id=?""",(ide,))
运行,但是当我将它传输到一个临时文件时,该文件也与主文件/文件位于同一目录中,我使用它打印 id 两次含义
cursor.execute("""SELECT id FROM DEATHROLL WHERE id=?""",(ide,))
是正确的。 主文件中的!deathroll命令代码:
connect = sqlite3.connect('Deathroll_Bot3.db')
cursor = connect.cursor()
client = commands.Bot(command_prefix='!')
@client.command()
async def deathjoin(ctx):
start_currency = 1000
ide = ctx.author.id
print("1st", ide)
cursor.execute("""SELECT id FROM DEATHROLL WHERE id=?""",(ide,))
print("2nd",ide)
data = cursor.fetchall()
if len(data)<= 0:
print("no data found: inserting data")
cursor.execute("INSERT INTO DEATHROLL (id,currency) VALUES (?,?)", (ide, start_currency))
connect.commit()
print("inserted data")
else:
await ctx.send("your already have an account")
暂存文件的完整代码:
import sqlite3
connect = sqlite3.connect('Deathroll_Bot3.db')
cursor=connect.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS DEATHROLL(
id INT PRIMARY KEY NOT NULL,
currency INT NOT NULL
)""")
ide=798794654698764826
print("1st",ide)
cursor.execute("""SELECT id FROM DEATHROLL WHERE id=?""",(ide,))
print("2nd",ide)
是的,我已经确保我在两个文件上使用来自同一个数据库的同一个表,并且两个文件都在同一个目录中
【问题讨论】:
标签: python sqlite discord.py