Python Peewee:一个模型多表

时间:2017-05-11 19:04:44

标签: python sqlite peewee

我目前正在使用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

如果不实际更改数据库模式/结构(由于向后兼容性),我该如何解决这个问题呢?

1 个答案:

答案 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])

Course1Course2的结构相同。