python如何通过twisted实现数据库异步插入


Posted in Python onMarch 20, 2018

如何通过twisted实现数据库异步插入?

1. 导入adbapi

2. 生成数据库连接池

3. 执行数据数据库插入操作

4. 打印错误信息,并排错

#!/usr/bin/python3
 
__author__ = 'beimenchuixue'
__blog__ = 'http://www.cnblogs.com/2bjiujiu/'
 
import pymysql
from twisted.enterprise import adbapi
from twisted.internet import reactor
 
 
def go_insert(cursor, sql):
  # 对数据库进行插入操作,并不需要commit,twisted会自动帮我commit
  try:
    for i in range(10):
      data = str(i)
      cursor.execute(sql, data)
  except Exception as e:
    print(e)
 
 
def handle_error(failure):
  # 打印错误
  if failure:
    print(failure)
 
 
if __name__ == '__main__':
  # 数据库基本配置
  db_settings = {
    'host': 'localhost',
    'db': 'jobole',
    'user': 'root',
    'password': 'passwort',
    'charset': 'utf8',
    'use_unicode': True
  }
  # sql语句模版
  insert_sql = 'insert into test_1(text_1) value(%s)'
   
  # 普通方法插入数据
  # conn = pymysql.connect(**db_settings)
  # cursor = conn.cursor()
  # cursor.execute(insert_sql, '1')
  # conn.commit()
   
  try:
    # 生成连接池
    db_conn = adbapi.ConnectionPool('pymysql', **db_settings)
    # 通过连接池执行具体的sql操作,返回一个对象
    query = db_conn.runInteraction(go_insert, insert_sql)
    # 对错误信息进行提示处理
    query.addCallbacks(handle_error)
  except Exception as e:
    print(e)
   
  # 定时,给4秒时间让twisted异步框架完成数据库插入异步操作,没有定时什么都不会做
  reactor.callLater(4, reactor.stop)
  reactor.run()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用filetype精确判断文件类型
Jul 02 Python
python django 增删改查操作 数据库Mysql
Jul 27 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
Feb 18 Python
Django stark组件使用及原理详解
Aug 22 Python
python读取word 中指定位置的表格及表格数据
Oct 23 Python
python数据化运营的重要意义
Nov 25 Python
Python运行异常管理解决方案
Mar 09 Python
python Canny边缘检测算法的实现
Apr 24 Python
Python代码注释规范代码实例解析
Aug 14 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
分分钟入门python语言
Mar 20 #Python
python使用生成器实现可迭代对象
Mar 20 #Python
浅谈Python中的作用域规则和闭包
Mar 20 #Python
python如何实现反向迭代
Mar 20 #Python
python利用高阶函数实现剪枝函数
Mar 20 #Python
python flask中静态文件的管理方法
Mar 20 #Python
python web基础之加载静态文件实例
Mar 20 #Python
You might like
一个简单计数器的源代码
2006/10/09 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
讲解JavaScript中for...in语句的使用方法
2015/06/03 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
Python中使用不同编码读写txt文件详解
2015/05/28 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
python raise的基本使用
2020/09/10 Python
我的网上商城创业计划书
2013/12/26 职场文书
物业招聘计划书
2014/01/10 职场文书
初中生物教学反思
2014/01/10 职场文书
先进集体获奖感言
2014/02/13 职场文书
培训协议书范本
2014/04/22 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript