2013-08-15 1 views
1

다음 코드는 eulexistdb 모듈을 사용하여 ExistDB와 통신하기 위해 Python으로 작성되었습니다.django 설정 모듈에서 오류를 가져 오는 python으로 eulexistdb 구성

:이 코드는 나에게 내가 원하는 출력을 제공하지만, 다른 IDE에서 실행 또는 "python.exe를의 myfile.py을"명령을 사용하는 경우 스튜디오 3 인 Aptana에서 잘 실행되는

from eulexistdb import db  
class TryExist:  
    def __init__(self): 
     self.db = db.ExistDB(server_url="http://localhost:8899/exist")  
    def get_data(self, query): 
     result = list() 
     qresult = self.db.executeQuery(query) 
     hits = self.db.getHits(qresult) 
     for i in range(hits): 
      result.append(str(self.db.retrieve(qresult, i))) 
     return result 

quer = ''' 
let $x:= doc("/db/sample/books.xml") 
return $x/bookstore/book/author/text() 
''' 
a = TryExist() 
myres = a.get_data(quer) 
print myres 

나는 놀랐다는 다음과 같은 오류를 제공합니다

:

import os 
# must be set before importing anything from django 
os.environ['DJANGO_SETTINGS_MODULE'] = 'localsettings' 
... writing link for existdb here... 

가 그럼 난 같은 오류가 발생합니다 :

django.core.exceptions.ImproperlyConfigured: Requested setting EXISTDB_TIMEOUT, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 
나는 다음과 같은 코드를 사용하여 문제를 해결하기 위해 내 자신의 localsetting.py을 사용
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty. 

ExistDB에 맞게 장고 설정을 어떻게 구성합니까? 날 도와주세요 ..

답변

1

Never Mind. 나는이 작은 연구에서 대답을 찾았습니다. site. 내가 한 일은 다음과 같은 구성으로 localsetting.py 파일로 생성되었습니다.

EXISTDB_SERVER_USER = 'user' 
EXISTDB_SERVER_PASSWORD = 'admin' 
EXISTDB_SERVER_URL = "http://localhost:8899/exist" 
EXISTDB_ROOT_COLLECTION = "/db" 

및 내 주요 파일에 myfile.py 내가 사용 :

from localsettings import EXISTDB_SERVER_URL 
import os 
os.environ['DJANGO_SETTINGS_MODULE'] = 'localsettings.py' 

및 클래스에서 내가 변경 TryExist __ 초기화 __()와 같은 :

def __init__(self): 
     self.db = db.ExistDB(server_url=EXISTDB_SERVER_URL) 

PS : os.environ [ 'DJANGO_SETTINGS_MODULE'] = 'localsettings'만 사용django.core.exceptions.Improper를 가져옵니다. lyConfigured : SECRET_KEY 설정은 비워 둘 수 없습니다..

0

코드가 IDE에서는 작동하지만 명령 행에서는 작동하지 않는 이유는 코드를 실행하는 데 사용되는 Python 환경에 차이가 있기 때문일 수 있습니다. 설치 eulexistdb하지만 하지 장고와

  1. VIRTUALENV :

    나는 시험 몇 일을했습니다. eulexistdbdjango.conf을로드하려고 시도하지만 실패하고 장고 구성에서 해당 구성을 가져 오려고 시도하지 않습니다. 궁극적으로 코드는 오류없이 실행됩니다.

  2. 'eulexistdb *and* Django: eulexistdb tries to load django.conf`와 함께 Virtualenv가 성공합니다. 그런 다음 장고 구성에서 구성을 가져 오려고 시도하지만 실패합니다. 나는 당신이 당신의 질문에서 기술 한 것과 같은 오류를 갖습니다. 당신이 당신의 accepted self-answer에서했던 것처럼

장고 구성을 추가하여 장고 설치의 존재에 오류가, 문제가 해결 될 수 방지합니다. 하지만 작성중인 코드가 장고를 사용하지 않는다면 코드를 실행하는 데 약간의 원형이 될 수 있습니다.문제를 해결하는 가장 직접적인 방법은 단순히 ExistDB 인스턴스를 생성 한 코드에 timeout 매개 변수를 추가하는 것입니다

self.db = db.ExistDB(
     server_url="http://localhost:8080/exist", timeout=None) 

이 작업을 수행 할 경우, 오류가 없을 것입니다. timeoutNone으로 설정하면 기본 동작이 그대로 유지되지만 eulexistdb은 장고 구성을 찾지 못합니다.