连接到 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' 作为列名。
这是我正在尝试的代码运行:
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' 作为列名。