我目前正在使用 Peewee 在 Python 上实现 SQLite,但我无法弄清楚如何对多个表使用单个模型。我需要为不同的表使用相同模型的原因是每个表都有大量的行。我需要执行 join()
他们之间的操作,所以只改变_meta.db_table
直接没有帮助。
我已经通过 SO 搜索了类似的问题(如下所示),但它们并没有真正解决我的问题:
我的简化用例:
from peewee import *
database = SqliteDatabase('test.db')
class BaseModel(Model):
class Meta:
database = database
class Student(BaseModel):
name = TextField()
date_of_birth = DateField()
class Course(BaseModel):
student = ForeignKeyField(rel_model=Student, to_field='id', unique=True)
score = IntegerField()
所以假设我想制作多个相同模型的表
Course()
,例如Bio101和Bio201,后来想比较score
从每个重叠的学生(注册了两门类(class)的学生)的这两门类(class)中提取。我应该如何解决这个问题,而不实际更改数据库模式/结构(由于向后兼容性)?
最佳答案
我遇到了类似的问题——即,我想从同一个模型创建多个表——最后找到了解决方案。
例如,如果要创建多个 Course
来自单个模型的表,您可以使用:
from peewee import *
database = SqliteDatabase('test.db')
class BaseModel(Model):
student = ForeignKeyField(rel_model=Student, to_field='id', unique=True)
score = IntegerField()
class Meta:
database = database
# Create Course 1
class Course1(BaseModel):
pass
# Create Course 2
class Course2(BaseModel):
pass
database.create_tables([Course1, Course2])
表
Course1
和 Course2
将具有相同的结构。
关于Python Peewee : One Model Multiple Tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43923705/