测试数据主外键关系处理

主外键关系,如何保证测试数据的关系

先建立两张表,主键外键关系如下

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条

结果:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值