用python配置eulexistdb在Django设置modu中带来错误

2024-09-25 18:17:10 发布

您现在位置:Python中文网/ 问答频道 /正文

为了使用eulexistdb模块与ExistDB通信,我用python编写了以下代码。在

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

我很惊讶这段代码在AptanaStudio3中运行得很好,给了我想要的输出,但是当从其他IDE运行或使用命令时”python.exe我的文件.py“带来以下错误:

^{pr2}$

我用了我自己的本地设置.py要使用以下代码解决此问题:

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: The SECRET_KEY setting must not be empty.

如何配置Django中的设置以适合ExistDB?请帮帮我。。在


Tags: 代码fromimportselfdbdatagetdef
2条回答

没关系。我从这个site中几乎没有研究就找到了答案。我所做的是创造了一个本地设置.py具有以下配置的文件。在

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

在我的主文件我的文件.py我使用了:

^{pr2}$

在TryExist类中,我在\uuInit\uuux()中改为:

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

注:仅使用操作系统环境['DJANGO_SETTINGS_MODULE']='localsettings'带来django.core.exceptions。未正确配置:密钥设置不能为空。。在

您的代码在IDE中工作而不是在命令行中工作的原因可能是您在运行代码时所使用的Python环境上有所不同。在

我做了几个测试:

  1. 安装了eulexistdb不是Django的Virtualenv。eulexistdb尝试加载django.conf,但失败,因此不尝试从Django配置获取其配置。最终,您的代码运行时不会出错。

  2. 带有“eulexistdb*and* Django:eulexistdbtries to load的Virtualenvdjango.conf公司`成功了。然后,我尝试从Django配置获取is配置,但失败了。我得到了你在问题中描述的同样的错误。

为了防止Django安装出现错误,可以像在accepted self-answer中那样添加Django配置来修复该问题。但是如果您正在编写的代码没有使用Django,那么这是一种让代码运行起来的迂回方式。解决这个问题最直接的方法是简单地在创建ExistDB实例的代码中添加一个timeout参数:

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

如果你这样做,就不会有任何错误。将timeout设置为None将保留默认行为,但阻止eulexistdb查找Django配置。在

相关问题 更多 >