0

JayDeBe 已全部设置,查询 Redshift 工作正常,但我需要找到一种方法来返回列名,这在将列表转换为 Pandas 数据框时会有所帮助

这是我用来执行查询的代码:

curs = conn.cursor()
curs.execute("select u.customer_name, u.status, from table.users u limit 10")
result = curs.fetchall()

根据查询,列名会有所不同,因此在这种情况下设置的格式不起作用

我已经谷歌搜索并尝试了各种建议,但没有一个完成任务。

任何有关如何返回列名的帮助将不胜感激,非常感谢!

4

2 回答 2

1

感谢乔恩斯科特的回复,但我在这里创建了我正在寻找的答案,也许它可以帮助某人......

curs = conn.cursor()
curs.execute("select u.customer_name, u.status, from table.users u limit 10")
# This next line was the key:
colnames = [desc[0] for desc in curs.description]
result = curs.fetchall()


# Then converting to Pandas DataFrame and adding the column names
df = pd.DataFrame(result)
df.columns = colnames

谢谢!

于 2020-01-02T14:15:34.320 回答
1

您可以使用类似这样的方法获取列名

select ordinal_position as position,
       column_name,
       data_type,
       case when character_maximum_length is not null
            then character_maximum_length
            else numeric_precision end as max_length,
       is_nullable,
       column_default as default_value
from information_schema.columns
where table_name = 'table_name'
      and table_schema = 'Schema name'
order by ordinal_position;

或者,您可以尝试 https://docs.aws.amazon.com/redshift/latest/dg/r_PG_TABLE_DEF.html

于 2020-01-02T13:23:04.903 回答