我有很多(~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)