You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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,提问作者سیدمحمد جفا

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:50:15