将SQLAlchemy结果更快地附加到python列表

时间:2014-04-04 17:24:42

标签: python performance python-2.7 sqlalchemy

我有一些数据库查询需要添加到列表中的结果(~60000行)。

代码如下所示:

hosts = connection.execute(some_query)
for host in hosts:
    mylist.append(host['display_name'])

然而,迭代所有项目并将它们附加到列表中的速度非常慢。 我怎样才能让它更快?我已查看https://wiki.python.org/moin/PythonSpeed/PerformanceTips#loops,但这似乎并不适用于我的案例。

2 个答案:

答案 0 :(得分:1)

使用List comprehesions代替脚环。

mylist = [host['display_name'] for host in hosts]

但是还要检查性能是否不在执行查询本身。

答案 1 :(得分:1)

我终于发现大部分时间花在了我们的fqlone函数(我使用SQLAlchemy的MySQL连接器)上,似乎是for循环的每次迭代都会调用它。

切换到MySQL-Python(mysqldb)连接器使脚本在~3s而不是~4m内运行。