Acceso asíncrono a MySQL con AioMySQL en Python

Acceso asíncrono a MySQL con AioMySQL en Python

MySQL es uno de los sistemas de gestión de bases de datos relacionales (RDBMS) más populares del mundo. Es una base de datos de código abierto que se utiliza en una amplia gama de aplicaciones, desde sitios web simples hasta grandes sistemas empresariales.

En este tutorial, aprenderemos a acceder a MySQL de forma asíncrona utilizando la biblioteca AioMySQL en Python. AioMySQL es una biblioteca de acceso a MySQL que proporciona una API asíncrona para trabajar con MySQL.

Requisitos

Para seguir este tutorial, necesitarás tener los siguientes requisitos:

  • Python 3.7 o superior
  • La biblioteca AioMySQL

Instalación

Para instalar AioMySQL, puedes utilizar el gestor de paquetes pip:

pip install aiomysql

Creando una conexión

Para crear una conexión a MySQL con AioMySQL, puedes utilizar el método connect():

Python
import aiomysql

async def main():
    # Crea una conexión a MySQL
    connection = await aiomysql.connect(
        host="localhost",
        port=3306,
        user="root",
        password="",
        database="tutorial",
    )

    # Realiza una consulta
    async with connection.cursor() as cursor:
        await cursor.execute("SELECT * FROM users")
        results = await cursor.fetchall()

    # Imprime los resultados
    for row in results:
        print(row)

if __name__ == "__main__":
    asyncio.run(main())

Este código creará una conexión a una base de datos MySQL llamada tutorial en el host localhost. Luego, ejecutará una consulta SELECT para recuperar todos los registros de la tabla users. Finalmente, imprimirá los resultados de la consulta.

Ejecutando consultas

AioMySQL proporciona una serie de métodos para ejecutar consultas MySQL. Por ejemplo, el método execute() se puede utilizar para ejecutar una consulta SELECT:

Python
async def main():
    # Crea una conexión a MySQL
    connection = await aiomysql.connect(
        host="localhost",
        port=3306,
        user="root",
        password="",
        database="tutorial",
    )

    # Realiza una consulta
    async with connection.cursor() as cursor:
        await cursor.execute("SELECT * FROM users")
        results = await cursor.fetchall()

    # Imprime los resultados
    for row in results:
        print(row)

if __name__ == "__main__":
    asyncio.run(main())

El método fetchall() se puede utilizar para recuperar todos los resultados de una consulta SELECT.

Ejecutando transacciones

AioMySQL también proporciona soporte para transacciones. Para iniciar una transacción, puedes utilizar el método begin():

Python
async def main():
    # Crea una conexión a MySQL
    connection = await aiomysql.connect(
        host="localhost",
        port=3306,
        user="root",
        password="",
        database="tutorial",
    )

    # Inicia una transacción
    async with connection.begin():
        # Realiza una operación
        async with connection.cursor() as cursor:
            await cursor.execute("UPDATE users SET name='John Doe' WHERE id=1")

        # Realiza otra operación
        async with connection.cursor() as cursor:
            await cursor.execute("UPDATE users SET email='johndoe@example.com' WHERE id=1")

    # Confirma la transacción
    await connection.commit()

if __name__ == "__main__":
    asyncio.run(main())

Este código iniciará una transacción, actualizará el nombre y el correo electrónico del usuario con ID 1, y luego confirmará la transacción.

Conclusión

AioMySQL es una biblioteca poderosa que proporciona una API asíncrona para trabajar con MySQL. En este tutorial, aprendimos a crear una conexión a MySQL, ejecutar consultas, y ejecutar transacciones.