首页 > 解决方案 > Redshift python连接器列名称是字节字符串

问题描述

假设我在红移中有下表:

a | b
-----
1 | 2
3 | 4

如果我想将它从 Redshift 提取到 apd.DataFrame我可以执行以下操作:

import redshift_connector
import pandas as pd

query = 'SELECT * FROM table'
conn = redshift_connector(user=user, host=host, password=password, port=port, database=database)

df = pd.read_sql_query(query, conn)

我正在使用以下包redshift_connector。但问题是列的名称df是字节字符串:

df['a']

这将返回错误,因为列的名称是b'a'. 有谁知道任何解决方法?我已经编写psycopg2了使用普通字符串的代码,因此希望有一个不会改变太多代码的解决方案。

编辑:

版本

蟒蛇 = 3.9.7

红移连接器 = 2.0.889

熊猫 = 1.2.5

标签: pythonpandasamazon-redshift

解决方案


你可以用一行来解决这个问题

df.columns = [col.decode("utf-8") for col in df.columns]

或者不使用pd.read_sql_query文档中建议的连接方法

cursor: redshift_connector.Cursor = conn.cursor()
cursor.execute("SELECT * FROM table")

result: pd.DataFrame = cursor.fetch_dataframe()

推荐阅读