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()

  

时间: 2024-08-05 15:49:54

python_如何通过twisted实现数据库异步插入?的相关文章

异步往数据库中插入每个用户的增删改操作日志

[x] ++我们需要一个工具类++ 用工具类异步向数据库中插入用户的操作日志 工具类代码如下: package com.dp.api.util; import com.dp.common.dao.DaoUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframew

转载 twisted(1)--何为异步

Reference: http://www.cnblogs.com/yueerwanwan0204/p/5589860.html 早就想写一篇文章,整体介绍python的2个异步库,twisted和tornado.我们在开发python的tcpserver时候,通常只会用3个库,twisted.tornado和gevent,其中以twisted和tornado为代表的异步库的效率比较高,但对于开发者要求有点高.大家都在讨论异步效率高,那到底什么是异步,为何它的效率比较高呢?世界总是守恒的,异步效

java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间

java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许 JDBC 将毫秒值标识为 SQL DATE 值.毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数. 为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将时间.分钟.秒和毫

向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE('{0}','YYYY-MM-DD'))

需要指出的是,C#中有datetime类型,但是这个类型是包括小时,分钟,秒的.这个格式与数据库中的Date类型不符,如果将now设为datetime类型插入数据会失败. 需要通过TO_DATE('字段','YYYY-MM-DD'))转换.如下: string.Format("insert into tablename (TIME) values(TO_DATE('{0}','YYYY-MM-DD'))",now) 错误写法: string.Format("insert in

node操作MongoDB数据库之插入

在上一篇中我们介绍了MongoDB的安装与配置,接下来的我们来看看在node中怎样操作MongoDB数据库. 在操作数据库之前,首先应该像关系型数据库一样建个数据库把... 启动数据库 利用命令提示符: 1.在创建数据库之前,我们应该启动数据库服务器 mongod --dbpath d:\MongoDB\data 注意:不要关闭这个数据库服务器...不然数据库就被关闭了 2.使用如下语句创建一个数据库 use mydb 这样mongodb会帮助我们自动创建他们,当然这个时候数据库还是空的. 3.

从控制台输入输出,来进行数据库的插入和查询操作的小程序

首先来看一下数据库结构 然后将数据库中插入如下数据 eclipse中包和Java文件 examStudent包的代码 ExamStudent.java package examStudent; public class ExamStudent { /** * 流水号 */ private int flowId; /** * 四级.六级 */ private int type; /** * 身份证号码 */ private int idCard; /** * 准考证号码 */ private in

使用JDBC向数据库中插入一条数据

原谅我是初学者,这个方法写的很烂,以后不会改进,谢谢 /** * 通过JDBC向数据库中插入一条数据 1.Statement 用于执行SQL语句的对象 1.1 通过Connection 的 * createStatement() 方法来获取 1.2 通过executeUpdate(sql) 的方法来执行SQL 1.3 * 传入的SQL可以是INSERT/UPDATE/DELETE,但不能是SELECT * * 2.Connection和Statement使用后一定要记得关闭 需要在finally

用java向mysql数据库中插入数据为空

利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util.Scanner; import org.junit.Test;public class JDBCTest { //2).在测试方法testAAddStudent()中 //1.获取从控制台输入的Student对象:Student student=getStudentFromConsole(); /

EF为什么向我的数据库再次插入已有对象?(ZT)

最近做了个多对多对实体对象,结果发现每次只要增加一个子实体,就会自动添加一个父实体进去,而不管该父实体是否已经存在. 找了好久,终于找到这篇文章,照文章内容来看,应该是断开连接导致的. 原文地址:http://msdn.microsoft.com/zh-cn/magazine/dn166926.aspx ------------------------------------------------------------------------------ 在为本期专栏的主题构思的时候,有三位