使用python+txt构建测试数据
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,一、背景有4张表,每张表要插入多条测试数据。如若还有同种需求,于是写了一个脚本,来添加数据。二、代码#--coding:utf8--import pymysqlclass InsertTestData
千家信息网最后更新 2025年12月01日使用python+txt构建测试数据
一、背景
有4张表,每张表要插入多条测试数据。如若还有同种需求,于是写了一个脚本,来添加数据。
二、代码
#--coding:utf8--import pymysqlclass InsertTestData(object): STUDENT_FILE = 'Student.txt' COURSE_FILE = 'Course.txt' TEACHER_FILE = 'Teacher.txt' SCORE_FILE = 'Score.txt' def __init__(self): self.connect = pymysql.Connect( host = 'localhost', port = 3306, user = 'root', # passwd = ' ', charset = 'utf8' ) self.database = 'execersise_test' def read_lines(self, filename): dict = {} file_name = filename.split('.')[0] dict['file_name'] = file_name with open(filename) as f: lines = f.readlines() dict['file_content'] = lines return dict def connect_mysql(self): cursor = self.connect.cursor() return cursor def close_mysql(self): self.connect.close() def close_curser(self): self.connect_mysql().close() def add_test_datas(self, file_obj): file = file_obj file_name = file['file_name'] title = file['file_content'][0].strip() datas = file['file_content'][1:] content_len = len(datas) data = '' counter = 1 for tmpdata in datas: if counter == content_len: data += '(' + tmpdata.strip() + ');' else: data += '(' + tmpdata.strip() + '),' counter += 1 sql = 'insert into ' + self.database + '.' + file_name + ' (' + title + ') values '+ data try: # self.connect_mysql().executemany(sql) self.connect_mysql().execute(sql) except Exception as e: print('add_' + file_name + ' error: ', e) self.connect.commit() self.close_curser()if __name__ == '__main__': testdata = InsertTestData() testdata.add_test_datas(testdata.read_lines(InsertTestData.STUDENT_FILE)) testdata.add_test_datas(testdata.read_lines(InsertTestData.TEACHER_FILE)) testdata.add_test_datas(testdata.read_lines(InsertTestData.COURSE_FILE)) testdata.add_test_datas(testdata.read_lines(InsertTestData.SCORE_FILE))在main函数中,只需要指定要读取的文件,即可快速插入测试数据。
为了便于构造sql语句,定义的数据文件格式如下:
`SID`,`CID`,`Degree` '103' , '3-245' , '86''105' , '3-245' , '75''109' , '3-245' , '68''103' , '3-105' , '92''105' , '3-105' , '88''109' , '3-105' , '76''101' , '3-105' , '64''107' , '3-105' , '91''108' , '3-105' , '78''101' , '6-166' , '85''107' , '6-166' , '79''108' , '6-166' , '81'
三、遇到的问题
UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence
原因:文件编码不是ANSI;
解决方法:将文件用notepad打开,另存,编码设置为ANSI格式。
入库的中文信息乱码,显示为'?'
原因:在创建数据库时,未将charset设置为utf8;
解决方法:重建数据库,重建表,数据库和表的charset都设置为utf8
如何将sql的values数据构造成'(),(),();'的格式
解决方法:增加计数器,当读取到最后一行时,以';'结尾
如何通过读取一个文件,同时获取要操作的表名称、列名、values
解决方法:
数据文件的文件名称,定义成表名;
数据文件的titile,即第一行内容,定义成表的列;
数据文件的内容,即第一行之后的内容,定义成表的数据。
数据
文件
方法
一行
内容
数据库
格式
测试
原因
名称
编码
乱码
代码
信息
函数
同时
多条
背景
脚本
计数器
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
基础设施网络安全意识
软件开发哪里学习
餐饮的软件开发
常见的软件开发流程有
会计软件开发实验心得
软件开发故事地图
电脑文件数据库管理
射阳县公安局网络安全招聘
璧山网络安全展
数字资产交易软件开发商
单位如何进行网络安全管理
新闻自由与网络安全
浙江图书馆 数据库
天津大型软件开发经历
商城数据库建表
兰州软件开发公司有哪些
局域网服务器如何扩展
网络安全事关国家网络主权
服务器端口安全管理
王牌战士最好玩的服务器
人口腔微生物数据库
周口电子仓库软件开发
战舰世界超测数据库
ei数据库怎样检索文章
lol服务器维护消息
车载网络技术未来的发展趋势
互联网公司服务器安全隐患
软件开发前台还是后台
蚌埠物业管理软件开发定制公司
欧美文献数据库