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的线程来解决生产者消费问题的示例
Apr 02 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
python的等深分箱实例
Nov 22 Python
Python爬虫解析网页的4种方式实例及原理解析
Dec 30 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
解决python使用list()时总是报错的问题
May 05 Python
如何更换python默认编辑器的背景色
Aug 10 Python
Python如何使用ElementTree解析xml
Oct 12 Python
详解python爬取弹幕与数据分析
Nov 14 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 批量删除 sql语句
2009/06/05 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
PHP生成树的方法
2015/07/28 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
jquery uaMatch源代码
2011/02/14 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
python检测服务器是否正常
2014/02/16 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
Python多继承顺序实例分析
2018/05/26 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
毕业生求职推荐信
2013/11/04 职场文书
家长给幼儿园的表扬信
2014/01/09 职场文书
写给老婆的检讨书
2014/02/21 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
暑假家长评语大全
2014/04/17 职场文书
2014年加油站工作总结
2014/12/04 职场文书
工作检讨书怎么写
2015/01/23 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
2015年新教师工作总结
2015/04/28 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python