使用python+txt构建测试数据
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,一、背景有4张表,每张表要插入多条测试数据。如若还有同种需求,于是写了一个脚本,来添加数据。二、代码#--coding:utf8--import pymysqlclass InsertTestData
千家信息网最后更新 2025年01月23日使用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安全错误
数据库的锁怎样保障安全
学生网络安全学习课后答案
dns服务器 网速
数据库如何备份一段时间
昌吉精益管理软件开发
通州服务器回收价目表
网络安全的问题不包括
湖南畅捷网络技术有限公司
服务器cpu指令集
c 项目怎么连接数据库
电报码输入法软件开发
服务器设置网络密码
ftp服务器图片如何显示
家用电脑服务器电源接口
液位仪怎么传输回数据库
软件开发岗待遇
oracle数据库添加列
网络安全法国际互联网
海东软件开发费用是多少
东信网络技术有限公司分公司
java多线程读取数据库
北大青鸟软件开发培训机构
炒股软件开发需要资质吗
软件开发的薪资待遇
陈自律软件开发
国服lol服务器代理
苏州防爆刀片服务器供应
在数据库表上的字段有效性规则是
云汇互联网科技有限公司
工业网络技术对机电一体化的应用
浙江诚信网络技术咨询成交价