我正在运行一个需要从数据库中查询大量单行的程序。我有一个(自动收报机,时间戳)对的列表(在一个pandas DataFrame中),我需要从数据库中检索它们相应的价格。现在,我正在使用pandas的.apply()为pandas DataFrame中的每一行对数据库运行查询。这是顺序的。当我有太多数据并且想知道如何提高性能时,我发现这太慢了。
我看到两种方法,一种我认为我更喜欢但我不太了解的方法。
在一个案例中,我可以使用
创建一个session.query(T).filter(...)
or_(
and_(
T.ticker == tickername[0],
T.timestamp == timestamp[0]
),
and_(
T.ticker == tickername[1],
T.timestamp == timestamp[1]
),
....
)
在另一种情况下(如果有现有的方法,那就是我可能更喜欢的那种情况),我会设计一个
q = session.query(T).filter(
and_(
T.ticker= tickername,
T.timestamp == timestamp
)
)
对于每个(自动收报机,时间戳)对,我对数据库(postgres)并行运行所有q。
我尝试过第一种方法,似乎某个地方存在导致事情悬空的瓶颈。
我不知道更好的方法来制作像这样的批量查询。