Python异步操作MySQL完整指南:aiomysql安装、连接池与SQLAlchemy集成

Leo
Leo
发布时间:2026-10-13| 6人浏览过
原创

本文详细介绍如何在Python中通过aiomysql库实现MySQL的异步操作。内容涵盖环境依赖(Python3.4+、asyncio、PyMySQL)、aiomysql的安装方法,以及三种核心应用场景:基础异步连接、异步连接池的使用,以及结合SQLAlchemy进行对象关系映射(ORM)的完整代码示例。

Python异步MySQL操作概述

本文通过具体实例演示如何使用Python进行MySQL的异步操作,供读者参考学习。

aiomysql安装与环境依赖

首先需要安装aiomysql库。

在开始之前,请确保满足以下依赖条件:

  • Python 3.4或更高版本
  • asyncio模块
  • PyMySQL库

执行以下命令进行安装:

aiomysql安装命令


pip install aiomysql

aiomysql核心应用场景

接下来介绍aiomysql在实际应用中的几种常见用法。

基础异步连接示例

首先是建立基本的异步数据库连接。

基础连接代码实现


import asyncio
from aiomysql import create_pool
loop = asyncio.get_event_loop()
async def go():
  async with create_pool(host='127.0.0.1', port=3306,
              user='root', password='',
              db='mysql', loop=loop) as pool:
    async with pool.get() as conn:
      async with conn.cursor() as cur:
        await cur.execute("SELECT 42;")
        value = await cur.fetchone()
        print(value)
loop.run_until_complete(go())

异步连接池使用示例

其次,演示如何创建和管理异步连接池以提高性能。

连接池代码实现


import asyncio
import aiomysql
async def test_example(loop):
  pool = await aiomysql.create_pool(host='127.0.0.1', port=3306,
                   user='root', password='',
                   db='mysql', loop=loop)
  async with pool.acquire() as conn:
    async with conn.cursor() as cur:
      await cur.execute("SELECT 42;")
      print(cur.description)
      (r,) = await cur.fetchone()
      assert r == 42
  pool.close()
  await pool.wait_closed()
loop = asyncio.get_event_loop()
loop.run_until_complete(test_example(loop))

SQLAlchemy ORM集成示例

最后,介绍如何结合SQLAlchemy对象关系映射(ORM)进行数据库操作。

该方法允许用户灵活定义表结构,并轻松执行查询、插入等数据库操作。

SQLAlchemy异步ORM代码实现


import asyncio
import sqlalchemy as sa
from aiomysql.sa import create_engine
metadata = sa.MetaData()
tbl = sa.Table('tbl', metadata,
        sa.Column('id', sa.Integer, primary_key=True),
        sa.Column('val', sa.String(255)))
async def go(loop):
  engine = await create_engine(user='root', db='test_pymysql',
                 host='127.0.0.1', password='', loop=loop)
  async with engine.acquire() as conn:
    await conn.execute(tbl.insert().values(val='abc'))
    await conn.execute(tbl.insert().values(val='xyz'))
    async for row in conn.execute(tbl.select()):
      print(row.id, row.val)
  engine.close()
  await engine.wait_closed()
loop = asyncio.get_event_loop()
loop.run_until_complete(go(loop))

相关资源推荐

更多关于Python数据库操作的内容,读者可参考本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》。

希望本文提供的代码示例对您的Python程序设计有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。