我使用postgresql和python sqlachmey来创建分区表,下面是示例代码。
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扩展创建分区。
现在,我需要使用类'Students'在不同的数据库下创建student表,而有些数据库不需要分区表,我如何使上面的代码动态化,以便从table_args中取出'postgresql_partition_by'?
根据文档,看起来,我必须使用字典来定义表列,但我不太确定。
1条答案
按热度按时间bksxznpy1#
Table
(或__table_args__
)的关键字参数是特定于方言的,因此您的postgresql_partition_by
将仅用于postgresql
方言,而不是sqlite
或其他方言。类SQL炼金术.架构.表(* 参数,**kw)
[...]
<dialectname>_<argname>
的形式传递。有关文档参数的详细信息,请参见Dialects中有关各个方言的文档。