提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录前言一、python脚本
1.代码2.不足3.效果 总结
前言
leetcode刷题测试用例不能在本地形成表格,不方便自己写的sql进行测试,不能获得阶段性sql结果,因而写了一个小脚本,将leetcode中的测试用例自动生成测试表。
一、python脚本 1.代码
import json
import pymysql
import re
content = 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
break
for 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 = i
for j in dict2[1].values():
dict4 = j
config = {'host': '127.0.0.1', # 默认127.0.0.1
'user': 'root', # 用户名
'password': '123456', # 密码
'port': 3306, # 端口,默认为3306
'database': 'db_vocation', # 数据库名称
'charset': 'utf8' # 字符编码
}
a = 1
con = 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 +=1
if a == 2:
cursor.execute(sql2)
con.commit()
a += 1
sql = '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:
break
sql6 = 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数据库,其他数据库可更改数据库连接驱动。
时光如水,人生逆旅矣。



