繁体   English   中英

Postgresql Sqlalchemy 动态表分区创建问题

[英]Postgresql Sqlalchemy dynamic table partition creation issue

我正在使用 postgresql 和 python sqllachmey 来创建分区表。 下面是示例代码。

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.types import Text
Base = declarative_base()
class Students(Base):
    __tablename__ = "Students"

    id = Column(Text, primary_key=True)
    name = Column(Text)
    type = Column(Text)
    desc = Column(Text)
    creation_time = Column(DateTime, default=func.now(), nullable=False, primary_key=True)
    __table_args__ = {
        'postgresql_partition_by': 'RANGE (creation_time)'
    }
table_list = [Students.__table__]
Base.metadata.create_all(self.engine, tables=table_list)

上面的代码创建了一个分区表,我正在使用 pg_partman 扩展创建分区。

现在,我的需求是,我想使用 class 'Students' 在不同的数据库下创建学生表,有些数据库不需要分区表。 我怎样才能使上面的代码动态化,以便我可以从table_args中取出'postgresql_partition_by'?

根据文档,看起来我必须使用字典来定义表列,但我不太确定。

Table (或__table_args__ )的关键字 arguemnts 是特定于方言的,因此您的postgresql_partition_by将仅用于postgresql方言,而不是sqlite或其他方言。

class sqlalchemy.schema.Table(*args, **kw)

[...]

**kw – 上面未提及的附加关键字 arguments 是特定于方言的,并以<dialectname>_<argname>的形式传递。 有关已记录的 arguments 的详细信息,请参阅方言中有关单个方言的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM