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内置函数bin() oct()等实现进制转换
Dec 30 Python
Python的装饰器使用详解
Jun 26 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
python的pytest框架之命令行参数详解(下)
Jun 27 Python
python卸载后再次安装遇到的问题解决
Jul 10 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
基于Django signals 信号作用及用法详解
Mar 28 Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 Python
Numpy(Pandas)删除全为零的列的方法
Sep 11 Python
Python collections.deque双边队列原理详解
Oct 05 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 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
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
js判断密码强度的方法
2020/03/18 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
python实现大文件分割与合并
2019/07/22 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
python+OpenCV实现图像拼接
2020/03/05 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
Python虚拟环境venv用法详解
2020/05/25 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
帕克纽约:PARKER NY
2018/12/09 全球购物
销售部主管岗位职责
2013/12/18 职场文书
公司联欢会策划方案
2014/05/19 职场文书
基层工作经历证明
2015/06/19 职场文书