faker批量生成10萬條測試數據


faker可以用來批量構造測試數據。首先安裝:pip install Faker

具體用法參考:https://zhuanlan.zhihu.com/p/87203290

這里主要是講下利用faker批量生成測試數據,並保存到數據庫。

如下圖,創建了一個person表,里面有id,name,address,birthdate。這幾個字段,id是自增屬性。

 

下面利用faker生成測試數據后,再調用pymysql將生成的數據存儲到數據庫對應的person表里面。

效果如圖:

demo如下:

import pymysql
from faker import Faker

faker = Faker("zh_CN")  # 中文數據


def insert_data():
    conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', database='school')
    cursor = conn.cursor()
    # SQL 插入語句
    sql = "INSERT INTO person(name,address,birthdate)VALUES (%s,%s,%s)"
    person_data = []
    for i in range(100):
        person_info = (faker.name(), faker.address(), faker.date())
        person_data.append(person_info)
    print(person_data)
    try:
        # 執行sql語句
        cursor.executemany(sql, person_data)  # todo 批量生成數據用executemany
        # 提交到數據庫執行
        conn.commit()
        print("插入數據完成...")
    except Exception as e:
        # 如果發生錯誤則回滾
        conn.rollback()
        raise e
    finally:
        conn.close()  # 關閉數據庫連接


insert_data()

 封裝后代碼:

import pymysql
from faker import Faker


class InsertData():
    def __init__(self, host, port, user, password, database):
        '''連接初始化'''
        self.host = host
        self.port = port
        self.user = user
        self.password = password
        self.database = database

        try:
            self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, password=self.password,
                                        database=self.database)
            self.cursor = self.conn.cursor()
            print("連接數據庫成功...")
        except Exception as e:
            raise e

    def get_data(self, number):
        '''獲取測試數據'''
        faker = Faker("zh_CN")  # 中文數據
        self.number = number
        person_data = []
        for i in range(self.number):
            person_info = (faker.name(), faker.address(), faker.date())
            person_data.append(person_info)
        # print(person_data)
        return person_data

    def execute(self, sql, data):
        '''執行sql'''
        self.cursor.executemany(sql, data)
        self.conn.commit()
        print("插入{}條數據完成...".format(self.number))

    def __del__(self):
        '''關閉連接資源'''
        self.cursor.close()
        self.conn.close()
        print('關閉數據庫連接...')


if __name__ == '__main__':
    db = InsertData('localhost', 3306, 'root', 'root', 'school')
    sql = "INSERT INTO person(name,address,birthdate)VALUES (%s,%s,%s)"
    db.execute(sql, db.get_data(100))

 生成10萬條測試數據如圖:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM