相关疑难解决方法(0)

在SQLAlchemy中映射大量类似的表

我有很多(~2000)个时间序列数据的位置.每个时间序列都有数百万行.我想将它们存储在Postgres数据库中.我目前的方法是为每个位置时间序列设置一个表,以及一个存储有关每个位置(坐标,高程等)的信息的元表.我正在使用Python/SQLAlchemy来创建和填充表.我想在元表和每个时间序列表之间建立关系来执行查询,例如"选择在日期A和日期B之间具有数据的所有位置"和"选择日期A的所有数据并导出带坐标的csv".创建具有相同结构的许多表(仅名称不同)并与元表建立关系的最佳方法是什么?或者我应该使用不同的数据库设计?

目前我正在使用这种方法来生成许多类似的映射:

from sqlalchemy import create_engine, MetaData
from sqlalchemy.types import Float, String, DateTime, Integer
from sqlalchemy import Column, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship, backref

Base = declarative_base()


def make_timeseries(name):
    class TimeSeries(Base):

        __tablename__ = name
        table_name = Column(String(50), ForeignKey('locations.table_name'))
        datetime = Column(DateTime, primary_key=True)
        value = Column(Float)

        location = relationship('Location', backref=backref('timeseries',
                                lazy='dynamic'))

        def __init__(self, table_name, datetime, value):
            self.table_name = table_name
            self.datetime = datetime
            self.value = value

        def __repr__(self):
            return "{}: {}".format(self.datetime, self.value)

    return TimeSeries


class Location(Base):

    __tablename__ …
Run Code Online (Sandbox Code Playgroud)

python sql database sqlalchemy

9
推荐指数
2
解决办法
3111
查看次数

标签 统计

database ×1

python ×1

sql ×1

sqlalchemy ×1