python - Django 中 URL 引用 PostgreSQL 数据库密码

标签 python django postgresql

我在使用 http://cookiecutter-django.readthedocs.org/en/latest/ 创建的项目中使用 Django 1.9.2 和 psyopg2 2.6.1 以及 Python 3.5.0 .我有一个如下所示的数据库配置:

import environ
from django.utils.http import urlquote
env = environ.Env()

DATABASES = {
    # 1) This does not work.
    # 'default': env.db("DATABASE_URL",
    #                   default="postgres://myuser:%s@127.0.0.1:5432/mydb" % "1234#abc")
    # 2) This does not work.
    # 'default': env.db("DATABASE_URL",
    #                   default="postgres://myuser:%s@127.0.0.1:5432/mydb" % urlquote("1234#abc"))

    # 3) This works 
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
        'USER': 'myuser',
        'PASSWORD': '1234#abc',
        'PORT': 5432,
        'HOST': '127.0.0.1'
    }
}

我的数据库密码中有一个#。我可以使用选项 #3 选项成功连接,但使用其他两个选项时我收到以下错误:

1) ValueError:对于基数为 10 的 int() 无效文字:'1234'

2) django.db.utils.OperationalError: FATAL: 用户“myuser”的密码验证失败

我如何正确地将带有 # 的密码发送到 PostgreSQL?

最佳答案

尝试将其编码为原始字符串,即在您的情况下:

 'default': env.db("DATABASE_URL",
    default="postgres://myuser:%s@127.0.0.1:5432/mydb" % r"1234#abc")

回发您的结果。

关于python - Django 中 URL 引用 PostgreSQL 数据库密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35462566/

相关文章:

python - 在 Plotly 图中将背景颜色设置为透明

python - 为什么我的线在 matplotlib 中被剪裁?

python - 通过 API 调用获取信息并进行身份验证

sql - 包含引号的 Postgres 语句管道

postgresql - xlog - 知道两个数据库是否来自源

python - 如何对具有多索引的时间序列进行滚动窗口计数?

python - 如何标记 Pandas DataFrames 的列和行?

python - Django MySQL Join 以提高性能

django - 如何在 Django admin 中模仿新应用程序

python - 如何使用字符串(从字典转换而来)更新 PostgreSQL 中的列?