pandas 使用JayDeBe和Amazon Redshift,是否有一种方法可以自动从查询中提取关联的列名?

wbgh16ku  于 2023-04-04  发布在  其他
关注(0)|答案(2)|浏览(108)

JayDeBe已经设置好了,Redshift查询也正常工作,但是我需要找到一种方法来返回列名,这在将列表转换为Pandas Dataframe 时会很有帮助
这是我用来执行查询的代码:

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

根据查询的不同,列名会有所不同,因此在这种情况下,设置格式将不起作用
我已经谷歌搜索,并尝试了各种建议,但没有完成任务。
任何关于如何返回列名称的帮助都将不胜感激,非常感谢!

hi3rlvi2

hi3rlvi21#

您可以使用类似下面的方法获取列名

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

2cmtqfgy

2cmtqfgy2#

谢谢乔恩·斯科特的回应,但我在这里创造了我想要的答案,也许它能帮助到某人...

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

谢谢!

相关问题