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基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
python基础教程之udp端口扫描
Feb 10 Python
Python读取mp3中ID3信息的方法
Mar 05 Python
django静态文件加载的方法
May 20 Python
python 获取页面表格数据存放到csv中的方法
Dec 26 Python
python浪漫表白源码
Apr 05 Python
Django REST framework 单元测试实例解析
Nov 07 Python
Python itertools.product方法代码实例
Mar 27 Python
Python实现爬取并分析电商评论
Jun 19 Python
浅析Python打包时包含静态文件处理方法
Jan 15 Python
Pytorch 中的optimizer使用说明
Mar 03 Python
提取视频中的音频 Python只需要三行代码!
May 10 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
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
js获取url中"?"后面的字串方法
2014/05/15 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
python分割文件的常用方法
2014/11/01 Python
python实现矩阵乘法的方法
2015/06/28 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
python实现移位加密和解密
2019/03/22 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
配件采购员岗位职责
2013/12/03 职场文书
优秀的毕业生的自我评价
2013/12/12 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
政风行风建设整改方案
2014/10/27 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
学校社团活动总结
2015/05/07 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
Java 多线程并发FutureTask
2022/06/28 Java/Android