URL引用Django中的PostgreSQL数据库密码

duf*_*ffn 6 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'
    }
}
Run Code Online (Sandbox Code Playgroud)

我的数据库密码有一个#.我可以成功连接选项#3选项,但与其他两个选项我收到这些错误:

1) ValueError: invalid literal for int() with base 10: '1234'

2)django.db.utils.OperationalError: FATAL: password authentication failed for user "myuser".

如何正确地将此密码发送#到PostgreSQL?

ale*_*ksk 0

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

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

发回您的结果。