postgresql 如何使用Peewee创建分区表?

6fe3ivhb  于 2023-04-11  发布在  PostgreSQL
关注(0)|答案(1)|浏览(142)

当我用peewee定义数据模型时,我如何使一个表按给定的字段分区?我对按日期列(例如,按一年中的月份)分区表感兴趣。
我在Peewee的文档中看到,我可以添加自定义约束作为数据模型的 meta部分的一部分,然后我如何添加分区命令,该命令将在表创建DDL的末尾进行?
有没有一种方法可以在模式创建后完成它?这也是一种方法...

dgtucam1

dgtucam11#

我在我的scrap目录中找到了一些可能对你有帮助的代码--这里我有一个文档表,它被划分为已审查/未审查的文档(基于“is_reviewed”列):

db = PostgresqlDatabase('parttest')

class Base(Model):
    class Meta:
        database = db

class Document(Base):
    # I believe it is necessary to do it this way vs using SERIAL.
    id = IntegerField(sequence='document_id_seq', index=True)
    name = CharField()
    is_reviewed = BooleanField()
    class Meta:                               
        table_settings = 'PARTITION BY LIST (is_reviewed)'                               

# Doc subclasses for accessing partitions directly.                                      
class DocumentReviewed(Document):
    class Meta:
        table_name = 'document_reviewed'

class DocumentUnreviewed(Document):
    class Meta:
        table_name = 'document_unreviewed'

db.create_tables([Document])

# Create the partitions.
db.execute_sql('create table document_reviewed partition of document '                   
               'for values in (true)')
db.execute_sql('create table document_unreviewed partition of document '                 
               'for values in (false)')

相关问题