如何用Python的Peewee库编写函数批量创建MySQL数据表并存储数据
用Peewee实现MySQL动态建表并存储数据
1. 初始化数据库连接
首先配置MySQL数据库连接参数,创建数据库实例:
import peewee from peewee import MySQLDatabase, Model, CharField # 填写你的数据库配置信息 db = MySQLDatabase( '你的数据库名', user='你的用户名', password='你的密码', host='127.0.0.1', port=3306 )
2. 动态生成数据表模型
由于表名是传入的动态列表,我们用type()生成对应的Peewee Model类,每个表对应一个带存储字段的模型:
def get_dynamic_model(table_name): # 动态创建Model,表名由外部参数决定 class DynamicModel(Model): # 定义存储数据的字段,这里用字符串类型,可根据实际需求调整 content = CharField() class Meta: database = db table_name = table_name return DynamicModel
3. 实现建表并存储数据的函数
修改原函数,先对表名去重避免重复建表,再逐个创建表并插入对应数据:
table_names = ['table1', 'table2', 'table2'] data = ['data1', 'data2', 'data3'] def table_creator(table_names, data): # 去重表名,防止重复创建同一表 unique_table_names = list(set(table_names)) # 取数据和表名列表的最小长度,避免索引越界 for idx, table_name in enumerate(unique_table_names[:len(data)]): model = get_dynamic_model(table_name) # safe=True 会检查表是否已存在,不存在才创建 model.create_table(safe=True) # 插入对应数据 model.create(content=data[idx]) print(f"表 {table_name} 创建完成,已存入数据: {data[idx]}") # 调用函数执行操作 table_creator(table_names, data)
关键注意事项
create_table(safe=True)参数可避免因表已存在抛出异常- 原表名列表存在重复项,通过
set()去重后再处理更合理 - 字段类型可根据实际数据调整,比如
IntegerField()、TextField()等 - 执行前确保MySQL服务正常运行,且数据库用户拥有建表和数据插入权限
内容的提问来源于stack exchange,提问作者سیدمحمد جفا
相关产品推荐
相关产品推荐

