我使用peewee定义了很多模型类.ClassName.create_table()可以生成表,但只能生成一个表.如何使用单个语句创建所有表?
col*_*fer 12
Peewee有一个帮助器,它将以正确的顺序创建表,但您仍需要明确传入所有模型:
from peewee import *
db = SqliteDatabase(':memory:')
db.create_tables([ModelA, ModelB, ModelC])
Run Code Online (Sandbox Code Playgroud)
假设所有表都分组在一个模块中,扩展了coleifer的答案:
import inspect
import peewee
import tables
models = [
obj for name, obj in inspect.getmembers(
tables, lambda obj: type(obj) == type and issubclass(obj, peewee.Model)
)
]
peewee.create_model_tables(models)
Run Code Online (Sandbox Code Playgroud)
小智 9
Python 3 的更新(以及像我一样通过 Google 遇到这个问题的每个人)。如果您拥有基于主要 peewee Model 类的所有模型,您可以简单地使用:
import peewee
models = peewee.Model.__subclasses__()
Run Code Online (Sandbox Code Playgroud)
归功于这个问题的想法。如果您的模型更复杂,他们还详细介绍了如何使其递归工作。
| 归档时间: |
|
| 查看次数: |
5513 次 |
| 最近记录: |