提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录前言一、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数据库,其他数据库可更改数据库连接驱动。
时光如水,人生逆旅矣。