zoukankan      html  css  js  c++  java
  • Python-通过twisted实现数据库异步插入?

    如何通过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()
    

      

      

  • 相关阅读:
    国内公有云对比(1)- 功能篇
    国内公有云对比(1.1)- 功能篇之新浪云
    人不成熟的六大特征
    HDU1506 Largest Rectangle in a Histogram (动规)
    windows pipe
    LeetCode || Candy
    Spin.js-CSS动画进度载入器
    poj 2932 Coneology (扫描线)
    虚拟存储器--虚拟地址与物理地址
    eclipse下的ssh框架整合过程及測试
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/7242292.html
Copyright © 2011-2022 走看看