如何加快SQLAlchemy查询?

时间:2017-08-13 17:10:48

标签: python performance sqlalchemy

我尝试使用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秒。有没有办法加快速度?

先谢谢!

0 个答案:

没有答案
相关问题