2021-08-30

python批量新增数据

#!/usr/bin/env python
#coding: utf-8
import pymysql
import gevent
import time
from dbutils.pooled_db import PooledDB
from MysqlHepler import MysqlHelper
from sql import *

class MyPyMysql:
def init(self, host, port, username, password, db, charset=‘utf8’):
self.host = host # mysql主机地址
self.port = port # mysql端口
self.username = username # mysql远程连接用户名
self.password = password # mysql远程连接密码
self.db = db # mysql使用的数据库名
self.charset = charset # mysql使用的字符编码,默认为utf8
self.pymysql_connect() # __init__初始化之后,执行的函数

def pymysql_connect(self):
    # pymysql连接mysql数据库
    # 需要的参数host,port,user,password,db,charset
    self.conn = pymysql.connect(host=self.host,
                                port=self.port,
                                user=self.username,
                                password=self.password,
                                db=self.db,
                                charset=self.charset
                                )
    # 连接mysql后执行的函数
    self.asynchronous()

def run(self, resNewCwzb):
    # 创建游标
    self.cur = self.conn.cursor()
    # 定义sql语句,插入数据id,name,gender,email
    sql = "insert into all_cwzb(字段名) " \
          "values (字段占位符%s)"
    # 定义总插入行数为一个空列表
    data_list = []
    for i in res:# 遍历全部数据
        # 添加所有任务到总的任务列表
        result = (从列表中取出需要新增的字段信息)
        data_list.append(result)# 拼接成一条数据
    # 执行多行插入,executemany(sql语句,数据(需一个元组类型))
    content = self.cur.executemany(sql, data_list)
    if content:
        print('成功插入第{}条数据')
    # 提交数据,必须提交,不然数据不会保存
    self.conn.commit()

def asynchronous(self):
    # g_l 任务列表
    # 定义了异步的函数: 这里用到了一个gevent.spawn方法
    res = XinsanbanClient.fetchResult(********)# 查询需要新增的数据信息
    print(len(res))查看需要新增多少条数据
    g_l = [gevent.spawn(self.run, resNewCwzb)]#将数据传到run方法中

    # gevent.joinall 等待所以操作都执行完毕
    gevent.joinall(g_l)
    self.cur.close()  # 关闭游标
    self.conn.close()  # 关闭pymysql连接

if name == ‘main’:
start_time = time.time() # 计算程序开始时间
st = MyPyMysql(‘数据库ip地址’, 端口号, ‘用户名’, ‘密码’, ‘数据库名称’) # 实例化类,传入新增表的必要参数
print(‘程序耗时{:.2f}’.format(time.time() - start_time)) # 计算程序总耗时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值