我正在通过pg8000在pandas中加载一些红移数据:
>>>> df = pd.read_sql(sql_text, pg8000_cnx)pg8000_cnx是到红移数据库的连接对象。我总是得到带字节引号的列,例如:
>>> df.columns
Index([b'column_',
b'column_2',
...
b'column_n'],
dtype='object', length=142)我知道我可以使用.decode('utf-8')和一些列表理解将列转换回字符串,但我试图将它们从redshift本身加载为字符串格式。尝试使用pg8000游标玩不同的CLIENT_ENCODING设置,但在pandas df中仍然得到字节引用的列。
import pg8000
conn = pg8000.connect(**db_details)
cursor = conn.cursor()
cursor.execute("SET CLIENT_ENCODING TO 'UTF8'")
cursor.execute(sql)
cursor.fetchone()
# load df here有没有一些我遗漏的红移或pg8000选项,可以从数据库连接对象本身加载utf-8解码字符串中的列标题?
发布于 2020-10-31 16:48:55
这是pg8000 1.16.6中的fixed,所以升级到最新版本应该可以解决这个问题。
因此,从verion 1.16.6开始,pg8000以str而不是bytes的形式返回列名。
https://stackoverflow.com/questions/56123518
复制相似问题