前言
承接上篇,当我们有了测试数据以后,还需要将这些数据插入数据库中。而且有一些测试数据我们是需要从别的表中获得,比如假如我们需要在订单表中插入一些商品的相关信息,那么这些数据是从商品表中关联而来的,不能随便编造,这个时候,我们就需要一个简单工具来实现这些功能。
工具
- python 3+
- pymysql
- faker
代码
实现功能
- 准备商品表和订单表(测试用,字段随便设置)
- 商品表中插入已准备好的测试数据
- 使用
faker
自定义功能自定义数据源为商品表并随机取出商品表部分字段插入订单表中
sql
CREATE TABLE `product` (
`pid` int(11) NOT NULL AUTO_INCREMENT,
`p_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
`price` double DEFAULT NULL,
`stock` int(11) DEFAULT NULL,
PRIMARY KEY (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
CREATE TABLE `order` (
`order_id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL,
`p_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
`price` double DEFAULT NULL,
`stock` int(11) DEFAULT NULL,
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
部分代码演示
local_config = {
'host': '127.0.0.1',
'port': 3306,
'user': 'root',
'passwd': '123456',
'db': 'test'
}
fakerSql = FakerSql(config=local_config, sql_path='table.ddl')
query_product_sql = "select pid,p_name,price,stock from product"
products = fakerSql.query_all(query_sql=query_product_sql)
product = fakerSql.faker.get_random_data(products)
insert_sql = fakerSql.generator_insert_python_code()['insert_sql']
fakerSql.cursor.execute(
insert_sql, ('0', product[0], product[1], product[2], product[3])
)
fakerSql.db.commit()
fakerSql.close()
完整代码
本篇文章由一文多发平台ArtiPub自动发布