python - Postgresql 分区和 sqlalchemy
问题描述
SQLAlchemy 文档解释了如何创建分区表。但它没有解释如何创建分区。
所以如果我有这个:
#Skipping create_engine and metadata
Base = declarative_base()
class Measure(Base):
__tablename__ = 'measures'
__table_args__ = {
postgresql_partition_by: 'RANGE (log_date)'
}
city_id = Column(Integer, not_null=True)
log_date = Columne(Date, not_null=True)
peaktemp = Column(Integer)
unitsales = Column(Integer)
class Measure2020(Base):
"""How am I suppposed to declare this ? """
我知道我会做的大部分事情SELECT * FROM measures WHERE logdate between XX and YY
。但这似乎很有趣。
解决方案
您可以使用MeasureMixin
两个类都可以继承的 a 。然后使用 anevent
来附加表分区。
from sqlalchemy import event
class MeasureMixin:
city_id = Column(Integer, not_null=True)
log_date = Column(Date, not_null=True)
peaktemp = Column(Integer)
unitsales = Column(Integer)
class Measure(MeasureMixin, Base):
__tablename__ = 'measures'
__table_args__ = {
postgresql_partition_by: 'RANGE (log_date)'
}
class Measure2020(MeasureMixin, Base):
__tablename__ = 'measures2020'
Measure2020.__table__.add_is_dependent_on(Measure.__table__)
event.listen(
Measure2020.__table__,
"after_create",
DDL("""ALTER TABLE measures ATTACH PARTITION measures2020
VALUES FROM ('2020-01-01') TO ('2021-01-01');""")
)
推荐阅读
- php - 如何使用 PHP 从循环中的复杂数组中获取值?
- azure - 如何使用 Terraform 从 azure 容器注册表中提取和部署 docker 映像?
- reactjs - 创建一个可以嵌套的反应组件
- python - sqlite3的路径有问题吗?
- yocto - 如何在 yocto 中指定较旧的 gcc 版本
- c# - 在 C# 中为多个测试类扩展报告不起作用?
- machine-learning - 如何使用 resnet 获得该预测的预测和置信度
- c++ - 在 Yocto Linux 中使用 Opencv 的 Gstreamer
- css - 使用波浪号将选择相邻的 div,但如果我使用类名而不是它不会..我错过了什么吗?
- python - 如何将 matplotlib.patches.FancyArrowPatch 的尾部宽度设置为零?