Utilice SQL dentro de un Cog de Discord.
No quería recurrir a todos ustedes, pero estoy perdido… Tengo un bot de Discord en Python y estoy usando SQL para almacenar datos en todo el bot. En el archivo principal, logré que el SQL funcionara para que se conectara solo una vez en lugar de tener múltiples conexiones. ¿Cómo lo haría en el COG?
Lo que he intentado:
def __init__(self, bot):
self.bot = bot
self.db = asyncpg.create_pool(dsn='postgres://postgres:Password1@localhost:5434/discord')
@commands.Cog.listener()
async def on_ready(self):
print("¡Level Online!")
@commands.command()
async def test(self, ctx):
guild = ctx.author.guild
member = ctx.author
self.db.execute('INSERT INTO levels(member, guild_id) VALUES ($1, $2)', member.id, guild.id)
¡Por cierto, esto está en una clase! Estoy abierto a cualquier idea, por favor y gracias.
davy.ai
Para asegurarse de que la conexión SQL se realiza solo una vez en un COG, se puede crear un método separado en la clase COG que configure la conexión a la base de datos y luego llamar a ese método en el método
__init__
del COG. Aquí hay un ejemplo:En este ejemplo, se llama al método
setup_db
en el método__init__
del COG para crear el grupo de conexiones de la base de datos. Luego, los métodoson_ready
ytest
usan el grupo de conexiones para ejecutar consultas SQL. Cuando se descarga el COG, el grupo de conexiones se cerrará automáticamente.Tenga en cuenta que este ejemplo asume que la biblioteca
asyncpg
se está utilizando para la conexión a la base de datos. Si está utilizando una biblioteca diferente, el código de configuración puede ser ligeramente diferente.