使用redshift_connector导出DataFrame列名为字节串如何解决?
解决方案
方案1(改动最小,优先推荐)
只需要在创建Redshift连接时加一个text_result=True参数即可,其余原有代码完全不用修改,就能得到和psycopg2完全一致的字符串类型列名:
import redshift_connector import pandas as pd query = 'SELECT * FROM table' # 仅新增text_result=True参数 conn = redshift_connector(user=user, host=host, password=password, port=port, database=database, text_result=True) df = pd.read_sql_query(query, conn)
该参数会让驱动自动把所有返回的字节类型内容(包括列名、字符串类型的字段值)转为UTF-8编码的普通字符串,完美对齐psycopg2的默认行为。
方案2(仅需新增1行代码,适配无法修改连接配置的场景)
如果不方便修改连接初始化的参数,也可以在拿到DataFrame后统一解码列名,后续业务逻辑也无需调整:
df = pd.read_sql_query(query, conn) # 新增一行解码所有列名 df.columns = [col.decode('utf-8') for col in df.columns]
内容的提问来源于stack exchange,提问作者Bruno Mello
相关产品推荐
相关产品推荐

