Bru*_*llo 1 python pandas amazon-redshift
假设我在 redshift 中有下表:
a | b
-----
1 | 2
3 | 4
Run Code Online (Sandbox Code Playgroud)
如果我想将其从 Redshift 提取到 a,pd.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)
Run Code Online (Sandbox Code Playgroud)
我正在使用以下包redshift_connector。但问题是,其中的列名df是字节字符串:
df['a']
Run Code Online (Sandbox Code Playgroud)
这将返回错误,因为列的名称是b'a'。有谁知道这个问题有什么解决方法吗?我已经编写了使用psycopg2普通字符串的代码,因此希望有一个不会改变太多代码的解决方案。
编辑:
版本
Python = 3.9.7
红移连接器 = 2.0.889
熊猫=1.2.5
你可以用一行来解决这个问题
df.columns = [col.decode("utf-8") for col in df.columns]
Run Code Online (Sandbox Code Playgroud)
或者不使用pd.read_sql_query文档中建议的连接方法
cursor: redshift_connector.Cursor = conn.cursor()
cursor.execute("SELECT * FROM table")
result: pd.DataFrame = cursor.fetch_dataframe()
Run Code Online (Sandbox Code Playgroud)