连接到 postgresql 的 table 时如何在 Python 中设置 sqlalchemy,列中包含字符 ñ

How to set sqlalchemy in Python when connect to postgresql's table with character ñ in columns

这是我正在尝试的代码运行:

import pandas as p
import locale
locale.setlocale(locale.LC_ALL, '')

Out[24]: 'Spanish_Argentina.1252'

from sqlalchemy import create_engine    
engine = create_engine('postgresql://user:pass@localhost/mdb',client_encoding = 'WIN1252')
p.read_sql("SELECT año FROM nacvivos.nac LIMIT 10",engine)

但是有这个编码问题:

ProgrammingError: (ProgrammingError) no existe la columna «aã±o» LINE 1: SELECT año FROM nacvivos.nac LIMIT 10 ^ 'SELECT a\xc3\xb1o FROM nacvivos.nac LIMIT 10' {}

我应该如何在 python 中设置配置来处理这个问题?忽略修改列名的明显答案将解决问题。 postgresql 中的数据库是 win1252 编码。提前致谢。

您必须在 create_engine 中指定 encoding 关键字(而不是 client_encoding),'cp1252' 是 python 的编解码器名称22=]:

engine = create_engine('postgresql://user:pass@localhost/mdb', encoding='cp1252')

然后确保您的查询也经过编码:

qry = u"SELECT año FROM nacvivos.nac LIMIT 10".encode('cp1252')
pd.read_sql(qry, engine)

通过这两个步骤,我能够在 table 中读取 'año' 作为列名。