Azure上的Python函数错误为;OperationalError:(psycopg2.OperationalError)无法翻译主机名;Mypassword@database_ip&引用;解决;

Azure上的Python函数错误为;OperationalError:(psycopg2.OperationalError)无法翻译主机名;Mypassword@database_ip&引用;解决;,python,postgresql,sqlalchemy,azure-functions,Python,Postgresql,Sqlalchemy,Azure Functions,我有一个python函数,它连接到Azure Postgresql并选择查询一些行。在本地运行没有问题。当我在Azure上发布并运行它时,我收到以下错误: OperationalError: (psycopg2.OperationalError) could not translate host name "Mypassword@database_ip" to address 我不知道为什么要将连接格式更改为db_password@db_ip,如屏幕截图所示 我的职能是:

我有一个python函数,它连接到Azure Postgresql并选择查询一些行。在本地运行没有问题。当我在Azure上发布并运行它时,我收到以下错误:

OperationalError: (psycopg2.OperationalError) could not translate host name "Mypassword@database_ip" to address

我不知道为什么要将连接格式更改为
db_password@db_ip
,如屏幕截图所示

我的职能是:

def get_engine(database='db_name', username='username', password='@password', host='ip', port=5432):
    engine_string = f"postgresql+psycopg2://{username}:{password}@{host}:{port}/{database}"
    engine = sqlalchemy.create_engine(engine_string)
    print("Database connection done!")
    return engine

密码中的文字
@
必须是。

密码中的文字
@
必须是。

而不是使用普通字符串格式,您可以使用它来保护自己免受用户名、密码等中的“特殊字符”的影响:

将sqlalchemy作为sa导入
# …
url=sa.engine.url.create(
drivername=“postgresql+psycopg2”,
username=“username”,
password=“@password”,
host=“ip”,
端口=5432,
database=“database”,
)
打印(url)#postgresql+psycopg2://用户名:%40password@ip:5432/数据库
引擎=sa.创建引擎(url)
``

您可以使用普通字符串格式来保护自己不受用户名、密码等中“特殊字符”的影响,而不是使用普通字符串格式:

将sqlalchemy作为sa导入
# …
url=sa.engine.url.create(
drivername=“postgresql+psycopg2”,
username=“username”,
password=“@password”,
host=“ip”,
端口=5432,
database=“database”,
)
打印(url)#postgresql+psycopg2://用户名:%40password@ip:5432/数据库
引擎=sa.创建引擎(url)
``

engine\u string=…
do
print(engine\u string)
之后联机查看您实际构建的内容。将结果作为问题的更新发布。在
engine\u string=…
do
print(engine\u string)
之后联机查看实际构建的内容。将结果作为更新发布到您的问题中。我认为在链接的重复目标中也有此功能非常有用。我认为在链接的重复目标中也有此功能非常有用。