You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数据库游标描述初始化带列名的Polars DataFrame?

直接从psycopg2游标初始化Polars DataFrame

问题场景

我使用psycopg2连接PostgreSQL数据库,通过游标获取记录及列名的代码如下:

rds_conn = psycopg2.connect(
        host=config.RDS_HOST_NAME,
        database=config.RDS_DB_NAME,
        user=config.RDS_DB_USER,
        password=config.RDS_DB_PASSWORD,
        port=config.RDS_PORT)
cur = rds_conn.cursor()
cur.execute(sql_query)
names = [x[0] for x in cur.description]
rows = cur.fetchall()
cur.close()

目前我是通过cursor.description获取的列名来初始化Pandas DataFrame:

df = pd.DataFrame(rows, columns=names)

现在想跳过Pandas,直接用cursor.description的列名初始化Polars DataFrame,尝试用polars.DataFrame.with_columns没成功,求解决方法。

解决方案

方法1:基于已获取的rows和列名构造

Polars的DataFrame构造函数支持通过schema参数指定列名,用法和Pandas类似,直接传入已获取的rows和names即可:

import polars as pl

df = pl.DataFrame(rows, schema=names)

方法2:直接从数据库/游标读取(推荐)

不需要手动调用fetchall加载全量数据到内存,Polars提供了read_database方法可以直接从数据库连接或已执行的游标读取数据,自动识别列名,效率更高:

import polars as pl

# 方式1:直接传入SQL语句和数据库连接
df = pl.read_database(sql_query, rds_conn)

# 方式2:从已执行的游标读取(适合已经执行过cur.execute的场景)
cur.execute(sql_query)
df = pl.read_database("", cur)

内容的提问来源于stack exchange,提问作者Balaji Venkatachalam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:03:17