gpt4 book ai didi

Python Peewee : One Model Multiple Tables

转载 作者:行者123 更新时间:2023-12-03 21:30:12 26 4
gpt4 key购买 nike

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

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com