2024-06-02 06:33:48 发布
网友
如何让我用AIOSQLite库创建的数据库为我的DiscordPY bot打开,这样我就不必在创建的每个命令和事件上不断创建新连接并关闭它们
经过进一步研究,我发现创建一个异步线程,使数据库连接保持全局,可以使数据库始终保持打开状态。我还发现关闭数据库不是必需的,但是可以这样做,因为异步线程将继续打开它,然后再打开它
class EternalAsynchronousDatabase(Thread): """ The asynchronous thread. """ def run(self): loop = new_event_loop() loop.run_until_complete(self._run()) loop.close() async def _run(self): global db db = await connect(discord_bot.name.lower().replace(' ', '_') + '.db') asyncdb = EternalAsynchronousDatabase() asyncdb.start() try: asyncdb.join() except KeyboardInterrupt: pass
然后,它总是可以像这样等待:
@bot.command() async def register(ctx): await db.executescript( 'CREATE TABLE IF NOT EXISTS users (current_username TEXT, discriminator INTEGER, id INTEGER);' 'INSERT INTO users VALUES ("?", ?, ?)', (ctx.author.name, ctx.author.discriminator, ctx.author.id) )
经过进一步研究,我发现创建一个异步线程,使数据库连接保持全局,可以使数据库始终保持打开状态。我还发现关闭数据库不是必需的,但是可以这样做,因为异步线程将继续打开它,然后再打开它
然后,它总是可以像这样等待:
相关问题 更多 >
编程相关推荐