Python异步操作MySQL示例【使用aiomysql】


Posted in Python onMay 16, 2019

本文实例讲述了Python异步操作MySQL。分享给大家供大家参考,具体如下:

安装aiomysql

依赖

  • Python3.4+
  • asyncio
  • PyMySQL

安装

pip install aiomysql

应用

基本的异步连接connection

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

异步的连接池 pool

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 - Object Relationship Mapping

可以随意定义表结构,轻松调用查询、插入等操作方法。

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转换HTML到Text纯文本的方法
Jan 15 Python
python实现清屏的方法
Apr 30 Python
Python中subprocess的简单使用示例
Jul 28 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
Jan 20 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
python代码编写计算器小程序
Mar 30 Python
tensorflow模型保存、加载之变量重命名实例
Jan 21 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
Django通过json格式收集主机信息
May 29 Python
Matplotlib 绘制饼图解决文字重叠的方法
Jul 24 Python
python 利用Pyinstaller打包Web项目
Oct 23 Python
Django 表单模型选择框如何使用分组
May 16 #Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 #Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 #Python
Python 20行简单实现有道在线翻译的详解
May 15 #Python
Python中的字符串切片(截取字符串)的详解
May 15 #Python
python3 property装饰器实现原理与用法示例
May 15 #Python
详解Python下载图片并保存本地的两种方式
May 15 #Python
You might like
一个简单的PHP入门源程序
2006/10/09 PHP
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
百度地图API使用方法详解
2015/08/25 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
异步加载script的代码
2011/01/12 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
理解Python中的With语句
2016/03/18 Python
详解python之协程gevent模块
2018/06/14 Python
对Python实现累加函数的方法详解
2019/01/23 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
python日志模块logbook使用方法
2019/09/19 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
Ajax的优点和缺点
2014/11/21 面试题
毕业生找工作自荐书
2014/06/30 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
优秀班组事迹材料
2014/12/24 职场文书
学校德育工作总结2015
2015/05/11 职场文书
《叶问2》观后感
2015/06/15 职场文书
Python+Tkinter打造签名设计工具
2022/04/01 Python