Python Peewee : One Model Multiple Tables

标签 python sqlite peewee

我目前正在使用 Peewee 在 Python 上实现 SQLite,但我无法弄清楚如何对多个表使用单个模型。我需要为不同的表使用相同模型的原因是每个表都有大量的行。我需要执行 join()他们之间的操作,所以只改变_meta.db_table直接没有帮助。

我已经通过 SO 搜索了类似的问题(如下所示),但它们并没有真正解决我的问题:

  • Single Django model, multiple tables?
  • Single Django model, multiple tables?

  • 我的简化用例:
    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])
    

    Course1Course2将具有相同的结构。

    关于Python Peewee : One Model Multiple Tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43923705/

    相关文章:

    sql - GORM many2many 预加载错误

    python peewee 原始查询,不转义字符

    python - Peewee 等模块是否支持 MsSQL?

    python - 如何在 peewee 中创建自引用的多对多字段?

    python - 对于循环,os.listdir() 无法正常工作

    python - 需要处理目录中的所有文件,但我只得到一个

    python - 用 python 和 re 清理文本

    python - 匹配两个不同的数组并在python中创建一个新数组

    java - 尝试更新 SQLite 时出现 "SQL error or missing data type near WHERE syntax"

    javascript - 如何保护 SQLite 数据库免受损坏