使用python+txt构建测试数据
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,一、背景有4张表,每张表要插入多条测试数据。如若还有同种需求,于是写了一个脚本,来添加数据。二、代码#--coding:utf8--import pymysqlclass InsertTestData
千家信息网最后更新 2026年10月31日使用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安全错误
数据库的锁怎样保障安全
华服互联网科技靠谱吗
新华互联网科技
朗新科技与工业互联网
互联网科技的
北京互联网络科技有限公司
银优互联网科技有限公司
深圳艾佳互联网科技
茂名市互联网科技产业园
青岛科技大学互联网大赛研究生
互联网公司黑科技创始人
互联网行业科技股
徐州市互联网科技有限公司
美国互联网科技实力
互联网方面的科技前沿
互联网第三次科技革命特征
广州燕处互联网科技有限公司
互联网金融运营模式中的金融科技
互联网时代高科技布局
华人运通互联网科技公司
上海互联网科技园景观
互联网科技公司的优势
互联网金融 科技金融
浩特互联网科技
互联网科技大会案例
海南购全球互联网科技
互联网科技有哪些公司
移动互联网年度科技创新
工业互联网展湾科技股份有限公司
唯美互联网科技
广州三三互联网科技有限公司