python向数据库中添加参数_使用python向数据库插入数据

#-*- coding:UTF-8 -*-

from pymysql importconnectimportgeventimporttimeclassMyPyMysql:#初始化属性

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__初始化之后,执行的函数

defpymysql_connect(self):#pymysql连接mysql数据库

#需要的参数host,port,user,password,db,charset

self.conn = connect(host=self.host,

port=self.port,

user=self.username,

password=self.password,

db=self.db,

charset=self.charset

)#连接mysql后执行的函数

self.asynchronous()defRun(self, nmin, nmax):#创建游标

self.cur =self.conn.cursor()#定义sql语句,插入不同数据时需更改此sql语句,飘黄警告可忽略

sql = "INSERT INTO s_capital_back_order (id,order_code,sub_order_code,back_order_code,pay_method_code,pay_type,refund_channel_order_code,refund_type,order_product_amounts,refund_amounts,order_time,pay_time,back_order_time,refund_time,create_time)"\"VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"

#定义总插入行数为一个空列表

data_list =[]for i inrange(nmin, nmax):#插入具体的假数据,需要与上方的sql语句的元素对应

result = (1104+i, "T6030513731188889870000" + str(i), "T6130513731188889870000" + str(i), "6221238129371983112" + str(i), "weChat", "20", "50000032020190507035840868"+str(i), "30", "10", "11", "2019-04-28 17:20:00", "2019-04-28 17:20:00", "2019-04-28 17:20:00","2019-04-28 17:20:00","2019-04-28 17:20:00")#添加所有任务到总的任务列表,即 将每次添加的数据插入总列表

data_list.append(result)#执行多行插入,executemany(sql语句,数据(需一个元组类型)),使用executemany执行多行插入可缩短插入时间提高效率

content =self.cur.executemany(sql, data_list)ifcontent:print('成功插入第{}条数据'.format(nmax - 1))#提交数据,必须提交,不然数据不会保存

self.conn.commit()defasynchronous(self):#g_l 任务列表

#定义了异步的函数: 这里用到了一个gevent.spawn方法

max_line = 50 #定义每次最大插入行数(max_line=10000,即一次插入10000行)

g_l = [gevent.spawn(self.Run, i, i + max_line) for i in range(1, 101, max_line)]#gevent.joinall 等待所以操作都执行完毕

gevent.joinall(g_l)

self.cur.close()#关闭游标

self.conn.close() #关闭pymysql连接

if __name__ == '__main__':

start_time= time.time() #计算程序开始时间

st = MyPyMysql('192.168.0.231', 3307, 'root', '1q2w3e', 'finance') #实例化类,传入必要参数

print('程序耗时{:.2f}'.format(time.time() - start_time)) #计算程序总耗时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值