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中使用MELIAE分析程序内存占用实例
Feb 18 Python
python中的装饰器详解
Apr 13 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
详解小白之KMP算法及python实现
Apr 04 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
Python代码中如何读取键盘录入的值
May 27 Python
Python自省及反射原理实例详解
Jul 06 Python
Django windows使用Apache实现部署流程解析
Oct 12 Python
python爬虫工具例举说明
Nov 30 Python
python之PySide2安装使用及QT Designer UI设计案例教程
Jul 26 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
Zend公司全球首推PHP认证
2006/10/09 PHP
php 301转向实现代码
2008/09/18 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
Git命令之分支详解
2021/03/02 PHP
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
python中的随机函数小结
2018/01/27 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
全球在线商店:BerryLook
2019/04/14 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
python+selenium小米商城红米K40手机自动抢购的示例代码
2021/03/24 Python
毕业生就业自荐信
2013/12/04 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python