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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python_如何通过twisted实现数据库异步插入?相关的知识,希望对你有一定的参考价值。

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

  1. 导入adbapi

  2. 生成数据库连接池

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

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

#!/usr/bin/python3

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_如何通过twisted实现数据库异步插入?的主要内容,如果未能解决你的问题,请参考以下文章

Twisted Python IRC bot - 如何异步执行函数以便它不会阻塞机器人?

scrapy机制mark(基于twisted)

Python爬虫编程思想(28):用Twisted框架实现时间戳客户端与服务端

Python学习---IO的异步[twisted模块]

Python_Scarapy_01_Scrapy架构流程介绍

转载 twisted--何为异步