我目前正在使用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
。
如果不实际更改数据库模式/结构(由于向后兼容性),我该如何解决这个问题呢?
答案 0 :(得分:0)
我遇到了类似的问题,即我想根据同一个模型创建多个表,最后找到了解决方案。
例如,如果您想从一个模型中创建多个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
的结构相同。