我尝试使用SQLAlchemy从数据库中获取列然后绘制它们,但是我现在这样做的速度非常慢。
我的表:
class Obs(Base):
__tablename__ = "Obs"
id = Column(Integer, primary_key= True)
obs_date = Column(Date, primary_key= True)
temp = Column(Float)
temp_i= Column(Float)
看起来像这样:
ID Date temp temp_i
-----------------------------------
3111 2010-10-10 0.10 0.11
3256 2010-10-10 0.11 0.21
3111 2011-10-11 1.12 0.11
3256 2011-10-11 2.21 0.51
我想要做的是过滤掉给定的ID,然后绘制Date-Temp对。所以我的过滤表应如下所示:
ID Date temp temp_i
-----------------------------------
3111 2010-10-10 0.10 0.11
3111 2011-10-11 1.12 0.11
我尝试了以下函数来过滤出给定id的临时值:
def getObs(id, from_date, to_date):
query = session.query(Obs.temp).filter(Obs.id == id). \
filter(and_(Obs.obs_date >= from_date, Obs.obs_date <= to_date))
tempList = []
for row in query:
tempList.append(row.temp)
return tempList
它可以工作,但非常慢,对于一个5000元素的列表,运行需要45秒。有没有办法加快速度?
先谢谢!