Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python的SQLAlchemy/Postgres中实际设置utf-8编码_Python_Postgresql_Flask_Utf 8_Sqlalchemy - Fatal编程技术网

如何在Python的SQLAlchemy/Postgres中实际设置utf-8编码

如何在Python的SQLAlchemy/Postgres中实际设置utf-8编码,python,postgresql,flask,utf-8,sqlalchemy,Python,Postgresql,Flask,Utf 8,Sqlalchemy,我正在使用Flask开发一个web应用程序,并使用SQLAlchemy开发一个Postgresql数据库。它很好用。除了一个小问题:所有的文本数据都采用某种编码,它不是utf-8,至少我认为不是 我环顾四周,寻找任何可能的解决方案,这就是我所尝试的: 在项目中的每个Python文件中包括这一行: -*-编码:utf-8-*- 按如下方式设置发动机: 定义初始自我: self.engine=sql.create_engineos.environ['DATABASE_URL'],encoding='

我正在使用Flask开发一个web应用程序,并使用SQLAlchemy开发一个Postgresql数据库。它很好用。除了一个小问题:所有的文本数据都采用某种编码,它不是utf-8,至少我认为不是

我环顾四周,寻找任何可能的解决方案,这就是我所尝试的:

在项目中的每个Python文件中包括这一行: -*-编码:utf-8-*- 按如下方式设置发动机: 定义初始自我: self.engine=sql.create_engineos.environ['DATABASE_URL'],encoding='utf8' self.conn=self.engine.connect self.metadata=sql.metadata 以及前面这些项目的一些变体,如client_encoding='utf8,而不是encoding='utf8。我还尝试了以下解决方案:

例如,这是我的选择函数之一,但问题发生在每个选择/插入/更新函数中:

def get_produtosself,id: produtos=sql.表'produtos',self.metadata,autoload=True, 使用=self.engine.columns自动加载_ parceiros=sql.表'parceiros',self.metadata,autoload=True, 使用=self.engine.columns自动加载_ q=sql。选择[produtos.id,produtos.nome,parceiros.nome\u parceiro, produtos.valor,produtos.qtd_descon, parceiros.id_parceiro] q=q.whereprodutos.id==id 返回self.conn.executeq.fetchall 程序不会引发任何异常,但数据只是带有错误的编码

以下是我的数据库中的数据:

这就是数据在我的应用程序中显示的方式:

正如JosefZ所说,这是一个案例。
出现此问题的原因尤其是某些条目是通过shell插入的,没有编码,导致了这种不一致。

您是否可以从psql控制台添加此命令的输出:\l应用程序正在Heroku上运行,因此我只能访问数据库本身。运行您所说的登录到我的数据库的命令不确定这样做是否正确,我得到了以下信息:一个明显的案例。您正确地怀疑所有文本数据都采用某种编码,而不是utf-8Se‡Æo Eletr“nicos”绝对是这句话的结果:“Seço Eletrônicos”。编码“cp850”。解码“cp1252”…@JosefZ这个问题实际上在不久前就解决了,但感谢您的回答,因为它可能会帮助其他人people@MarcosSombra那么,你应该最终接受答案来解释为什么这很重要。