起步
进行数十亿数据压测时,测试环境发生了一个很奇怪的现象:在对 SQLAlchemy 查出的结果做遍历操作时,随着集合越大,遍历的时间跟着变长,是肉眼可见的变长。
根据现象,一位腾讯的程序员向我提出了疑问:会不会遍历过程中 SQLAlchemy 又去查询了数据库?
使用 databases 做异步查询的时候,sqlite、mysql 查询结果返回的都是元组类型,但是连接 pg 数据库的时候返回的是 Record 对象实例。
database = Database(
'postgresql://postgres:password@192.168.111.136:54321/postgres',
min_size=5,
max_size=20
)
await database.connect()
query = "SELECT score, name, id FROM HighScores"
rows = await database.fetch_all(query=query) # 查询
print(rows) # 打印结果
await database.disconnect()
输出:
[<databases.backends.postgres.Record object at 0x000001BADB1E2A08>]