2016-02-17 4 views
5

में यूआरएल उद्धरण PostgreSQL डेटाबेस पासवर्ड मैं http://cookiecutter-django.readthedocs.org/en/latest/ के साथ बनाई गई एक परियोजना में पायथन 3.5.0 के साथ Django 1.9.2 और psyopg2 2.6.1 का उपयोग कर रहा हूं।यूआरएल उद्धरण Django

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:%[email protected]:5432/mydb" % "1234#abc") 
    # 2) This does not work. 
    # 'default': env.db("DATABASE_URL", 
    #     default="postgres://myuser:%[email protected]: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: invalid literal for int() with base 10: '1234'

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

पोस्टग्रेएसक्यूएल पर # के साथ मैं इस पासवर्ड को सही तरीके से कैसे भेजूं?

+0

'urlquote ('1234 # abc') '' 1234% 23abc' वापस करेगा जो स्पष्ट रूप से आपके डेटाबेस के पासवर्ड से मेल नहीं खाता है। – xyres

+0

@xyres मैंने अपना मुद्दा स्पष्ट करने के लिए प्रश्न अपडेट किया है। – duffn

+3

[यह एक बग है] (http://github.com/joke2k/django-environ/issues/55)। Django-environment लाइब्रेरी के लेखक ने इस बग को ठीक करने के लिए [पुल अनुरोध] (https://github.com/joke2k/django-environ/pull/69) बनाया है लेकिन अभी भी इसे विलय नहीं किया है। – xyres

उत्तर

0

, एक कच्चे स्ट्रिंग, यानी के रूप में यह एन्कोडिंग अपने मामले में प्रयास करें:

'default': env.db("DATABASE_URL", 
    default="postgres://myuser:%[email protected]:5432/mydb" % r"1234#abc") 

पोस्ट अपने परिणामों के साथ वापस।

संबंधित मुद्दे