我在尝试使用 Python 中的 psycopg2 库连接到 PostgreSQL 时遇到问题。我收到以下错误:
Traceback (most recent call last):
File "c:\Users\ferre\Projects\PycharmProjects\Portal-de-Noticias\backend\user_registration\app.py", line 3, in <module>
from noticias import noticias_bp
File "c:\Users\ferre\Projects\PycharmProjects\Portal-de-Noticias\backend\user_registration\noticias.py", line 8, in <module>
conn = psycopg2.connect(
^^^^^^^^^^^^^^^^^
File "C:\Users\ferre\Projects\PycharmProjects\Portal-de-Noticias\.venv\Lib\site-packages\psycopg2\__init__.py", line 122, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 78: invalid continuation byte
这是我尝试建立连接的代码片段:
import psycopg2
from flask import Blueprint, jsonify, request
# Creating the Blueprint
noticias_bp = Blueprint('noticias', __name__)
# Database connection
conn = psycopg2.connect(
dbname="portalDeNoticias",
user="postgres",
password="mk785",
host="localhost",
port='5432'
)
cur = conn.cursor()
此外,这里有一个在代码中其他地方使用的类似函数来连接数据库:
def connect_db():
conn = psycopg2.connect(
dbname="portalDeNoticias",
user="postgres",
password="mk785",
host="localhost",
port='5432'
)
return conn
该错误似乎与 UTF-8 解码问题有关,但我不确定到底是什么原因导致此错误或如何修复它。
有人可以帮助我了解可能出了什么问题以及如何解决此错误吗?
谢谢!
看起来 Postgres 对于密码允许的字符有一些限制。如果您使用 ODBC 连接字符串,则密码中不允许包含多个字符。
查看此 DBA Stack Exchange 帖子 - 链接
确保密码中没有任何这些字符或非 ASCII 字符。