主外键关系,如何保证测试数据的关系
先建立两张表,主键外键关系如下
create table if not exists student(
student_num INT primary key,
student_name varchar(16),
class_num varchar(20) FOREIGN key(class_num) REFERENCES class(class_num)
)
create table if not exists class(
class_num varchar(20) primary key,
class_desc varchar(20)
)
(('card_no', 253, None, 160, 160, 0, True), ('card_medium', 254, None, 4, 4, 0, True), ('card_type', 254, None, 8, 8, 0, True), ('card_class', 254, None, 16, 16, 0, True), ('cstm_name', 253, None, 160, 160, 0, True), ('app_date', 246, None, 39, 39, 0, True), ('open_date', 246, None, 39, 39, 0, True), ('open_inst', 254, None, 32, 32, 0, True), ('due_date', 246, None, 39, 39, 0, True), ('max_sub_acc', 246, None, 39, 39, 0, True), ('b_flag', 246, None, 39, 39, 0, True), ('b_flag_info', 246, None, 39, 39, 0, True), ('bds_start_dt', 10, None, 10, 10, 0, True), ('bds_end_dt', 10, None, 10, 10, 0, True), ('ddp_org', 253, None, 160, 160, 0, True))
表名:'class'
(('class_num', 253, None, 80, 80, 0, False), ('class_desc', 253, None, 80, 80, 0, True))
表名:'student'
(('student_num', 3, None, 11, 11, 0, False), ('student_name', 253, None, 64, 64, 0, False), ('class_num', 253, None, 80, 80, 0, True))
插入外键数据,用一条SQL语句将数据表中某列更新到另一个数据表里
sql = f"update {servent_table} set {out_key} = {random.choice(priDatas)} where {colname} = {res2[j][0]}"
真实情况的主键对应外键的关系其实是可能一对多的
因此:需要维护一个文件specialTab,每行的内容是 表名,特殊的需要产生的测试数据条数
class,50
goodType,300
city,200
busType,100
代码在获取表名之后,会判断一下该表名是否存在文件中,如果存在,则将测试数据行数更改为文件中的
for table_name in table_lists: #数据库有多少表,循环多少次
print(table_name)
# 判断表名是否有特殊的要求
with open("specialTab", "r", encoding='utf-8') as f:
if table_name.replace("'","") in f.read().strip().split(','):
f.seek(0) # 指标回到第一行
for i in f:
table_row = i.strip().split(',')
table = table_row[0]
row = int(table_row[1])
if table_name.replace("'","") == table:
count = row
并且在循环生成测试数据后,会将数据再更新为命令行输入的默认数量
测试:命令行中输入每张表的测试数据为500条
结果: