如何python批量往mysql中插入测试数据

背景
大家总会遇到一种情况。测试数据产品,当前没有数据或者数仓的数据没有同步过来。是不是纠结的很,如何高效的在mysql中生成测试数据,辅助测试尤其重要

pymysql相关知识

pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码

connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接

cursor对象支持的方法
execute(op) 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象

简单示例

def insert_system_notice():
    #连接信息
    notice_con = pymysql.connect(
        host="127.0.0.1",
        port=3306,
        user="root",
        password="123456",
        db="test_db"
    )
    notice_cur = notice_con.cursor()

    sql = 'select id from sys_notice order by id desc limit 1'
    #执行命令
    notice_cur.execute(sql)

    data_id = int(notice_cur.fetchall()[0][0])
    for i in range(100):
        data_id += 1
        sql = '''
            INSERT INTO `sys_notice` 
            (`id`, `in_id`, `user_id`, `type`, `read_status`, `content`, `create_time`, `update_time`) 
            VALUES 
            ('{}', '1000006', '3162', '2', '1', '1000006/埃德加尔', '2021-04-26 17:31:34', '2021-04-26 17:34:04')
            '''.format(data_id)
        notice_cur.execute(sql)
    #提交当前事务
    notice_con.commit()


insert_system_notice()

单一简单插入mysql数据库

import pymysql

def insert_mall():
    mall_con = pymysql.connect(
        host="127.0.0.1",
        port=3306,
        user="root",
        password="123456",
        db="test_db"
    )
    mall_cur = mall_con.cursor()

    data_id = 473215
    active_id = 600
    for i in range(active_id, active_id+100):
        sql = "INSERT INTO `test_db`.`t0310` (`ID`, `品名`, `规格`, `颜色`, `数量`) VALUES ('{}', 'aaa', 'a-1', '红色', '{}');".format(i,data_id)
        print(sql)
        mall_cur.execute(str(sql))
        data_id += 1

    mall_con.commit()

insert_mall()

效果图:
如何python批量往mysql中插入测试数据_第1张图片

在测试初期,数据的准备工作迎刃而解。

你可能感兴趣的:(python相关内容)