databases 连接 pg 查询时返回的数据类型
020.10.6
使用 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>]
乍看就觉得麻烦了,毕竟连接不同的数据库时查询会返回不同的结果,大大降低了代码的灵活性,还要引入 if 做类型判断。
但是点进 databases 源码可以看到 Record 的代码:
# database/backends/postgres.py
class Record(Mapping):
def __init__(
self, row: asyncpg.Record, result_columns: tuple, dialect: Dialect
) -