欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

leetcode测试用例转化数据库表

时间:2023-05-30

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言一、python脚本

1.代码2.不足3.效果 总结


前言

leetcode刷题测试用例不能在本地形成表格,不方便自己写的sql进行测试,不能获得阶段性sql结果,因而写了一个小脚本,将leetcode中的测试用例自动生成测试表。


一、python脚本 1.代码

import jsonimport pymysqlimport recontent = eval(input("请输入:"))dict1 = eval(json.dumps(content))host = '127.0.0.1'user = 'root'password = '123456'dict2 = []list1 = []for i in dict1.keys(): database_name = i breakfor i in dict1.values(): dict2.append(i)for j in dict2[0].keys(): list1.append(j)table = list1[0]for i in dict2[0].values(): list3 = ifor j in dict2[1].values(): dict4 = jconfig = {'host': '127.0.0.1', # 默认127.0.0.1 'user': 'root', # 用户名 'password': '123456', # 密码 'port': 3306, # 端口,默认为3306 'database': 'db_vocation', # 数据库名称 'charset': 'utf8' # 字符编码 }a = 1con = pymysql.connect(**config)sql1 = f'drop database {database_name};'sql2 = f"create database {database_name} charset='utf8'"cursor = con.cursor()if a == 1: try: cursor.execute(sql1) con.commit() except: a += 1 else: a +=1if a == 2: cursor.execute(sql2) con.commit() a += 1sql = 'use headers'cursor.execute(sql)con.commit()sql3 = "create table {0} (`linshi` int(10));".format(table)cursor.execute(sql3)con.commit()print('创建成功')for i in list3: sql4 = f"alter table {table} add {i} varchar(20);" cursor.execute(sql4)for j in dict4: for index, world in enumerate(j): try: if re.findall("[0-9]{4}-[0-9]{2}-[0-9]{2}", world): sql5 = f"alter table {table} modify column {list3[index]} datetime;" cursor.execute(sql5) except: continue else: breaksql6 = f"alter table {table} drop column `linshi`;"cursor.execute(sql6)con.commit()for i in dict4: data = tuple(i) sql7 = f"insert into {table} values {data};" cursor.execute(sql7) con.commit()con.close()

2.不足

建表数据类型,只对时间的字段进行了处理处理成datetime,其余一律设置成了varchar(20),有长度需求可以更改;

3.效果

leetcode用例:
{“headers”: {“Weather”: [“id”, “recordDate”, “temperature”]}, “rows”: {“Weather”: [[1, “2015-01-01”, 10], [2, “2015-01-02”, 25], [3, “2015-01-03”, 20], [4, “2015-01-04”, 30]]}}

运行前:

运行中:

运行后:

总结

这里只针对mysql数据库,其他数据库可更改数据库连接驱动。
时光如水,人生逆旅矣。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。