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():
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:
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():
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.


