python批量写入数据库_python实现数据库批量数据插入.

这篇博客介绍如何使用Python实现批量写入数据库,包括创建数据库连接、定义日期格式转换函数,以及演示如何生成随机数据并插入到具有唯一key的表中。示例代码展示了在循环中插入数据的过程,并提供了日期时间的处理方法。
摘要由CSDN通过智能技术生成

需求:

1.需要往数据库插入批量数据,且数据需要随机,带有日期格式的数据。

2.查看目的接收表,存在唯一key,字段2是日期格式。其他数据可以一样。

首先需要写一个链接数据库的函数:import MySQLdb

class MySql():

def __init__(self, db):

self.mysql = MySQLdb.Connect(

host="10.100.111.111",

port=33066,

user="mysql",

passwd="123456",

db=db,

charset="utf8")

self.cursor = self.mysql.cursor()

def quary(self, sql):

"""

查询

:param sql:

:return:

"""

self.cursor.execute(sql)

result = self.cursor.fetchall()

return result

def update(self, sql):

"""

修改

:param sql:

:return:

"""

self.cursor.execute(sql)

self.mysql.commit()

def delete(self, sql):

"""

删除

:param sql:

:return:

"""

self.cursor.execute(sql)

self.mysql.commit()

def insert(self, sql):

"""

插入

:param sql:

:return:

"""

self.cursor.execute(sql)

self.mysql.commit()

return "success"

def close(self):

self.mysql.close()

然后利用python循环写一个日期格式转化的函数:

class DateEncoder(json.JSONEncoder):

def default(self, obj):

if isinstance(obj, datetime):

return obj.strftime("%Y-%m-%d %H:%M:%S")

else:

return json.JSONEncoder.default(self, obj)

def test1(self):

"""

id为唯一key,不能相同,需要查询到count总数得到id 时间是当前时间+1天生成sql语句

"""

ids = 174

cur_date = time.strftime("%Y-%m-%d")

start_time = datetime.strptime(cur_date, "%Y-%m-%d")

for i in range(50):

ids = ids + 1

dt = start_time + timedelta(days=i)

to_date = json.dumps(dt, cls=DateEncoder) # 将datetime格式转化为json格式

to_date = to_date[1:11] # 取string中的年月日

value = (

ids, to_date, '0104', '10', '1609725600', 64, '产品测试', 1100018191, 'mytest',

'5ff674f5e4b0fd510e457fd2', '1.7号啊',

0, '01', '06', '01', '0', '菜单2', '908E14881C52DF30A50C93491AE2BA8C', '1', '123', 10001, 9999, 912)

sql = """INSERT INTO ads_marketing_report.test_table(id, dt, fdate, ftime, servertime, agency_id, agency_name, owner_id, owner_name, service_id, service_name, service_platform, sbiztype, tritype, menulev, menuseq, btnele, btnlinkmd, functype, smssource, expose_nums, expose_uv, click_nums)

VALUES""" + str(value).decode('string_escape')

mysql.insert(sql=sql)

插入多少条 循环多少次就行,或者研究下存储过程插入也行的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值