更快地将SQLAlchemy结果追加到Python列表中

0 投票
2 回答
785 浏览
提问于 2025-04-18 01:23

我有一些从数据库查询得到的结果,大约有60000行数据,我需要把这些数据添加到一个列表里。

代码看起来是这样的:

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

不过,逐个遍历这些数据并把它们添加到列表里非常慢。有没有什么办法可以让这个过程更快一些?我查过这个链接,但似乎对我的情况不太适用。

2 个回答

1

使用列表推导式来代替for循环。

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

不过也要检查一下,性能问题是不是出在执行查询本身。

1

我终于发现,我们使用的mysql连接器(也就是和SQLAlchemy一起用的oursql)里的fetchone函数大部分时间都在这里浪费了。这个函数似乎在每次循环的时候都会被调用。

换成MySQL-Python(mysqldb)连接器后,脚本的运行时间从大约4分钟缩短到了大约3秒。

撰写回答