gpt4 book ai didi

python - 连接到列中带有字符ñ的postgresql表时如何在Python中设置sqlalchemy

转载 作者:行者123 更新时间:2023-11-29 13:28:53 27 4
gpt4 key购买 nike

这是我尝试运行的代码:

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' 是 ' WIN1252':

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)

通过这两个步骤,我能够读取以“año”作为列名的表。

关于python - 连接到列中带有字符ñ的postgresql表时如何在Python中设置sqlalchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28397855/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com