Установка контекста BaseX Document / Database программно - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь установить контекст базы данных / документа программно через API Python. Мои шаги следующие:

session = BaseXClient.Session("localhost", 1984, "admin", "admin")
query = session.query("//node")
query.context("doc('dbname')") # **NOT SURE HOW TO SET THE DB TO USE**
query.execute()

Я уже знаю, что могу просто использовать объект сеанса следующим образом, и он прекрасно работает:

session.execute("xquery doc('dbname')//node/child")

Но я ищу способ ОТКРЫТЬ базу данных в рамках вызова программы отдельно от строки запроса. Я не могу найти документацию для явного задания базы данных до выполнения запроса с использованием объекта контекста. Я посмотрел на исходный код для python BaseXClient и есть метод контекста для экземпляра Query (), который недостаточно хорошо документирован. Я пытаюсь использовать это, чтобы установить базу данных, и мне не везет.

1 Ответ

0 голосов
/ 11 января 2019

Контекст, который вы указали, является просто строкой. Это не оценивается. В контексте клиент-сервер трудно понять, как можно пройти в базе данных здесь.

Я думаю, что вы можете использовать команду execute, чтобы открыть базу данных перед выполнением запроса. Это установит контекст. например,

var q = session.execute("open mydatabase",log.print)
var q = session.query("count(*)")

или используйте команду запроса bind для передачи параметров

var q = session.query("declare variable $db external;  count(collection($db))")
q.bind("db", "mydatabase","",log.print);
q.execute(log.print);

Извините, в этих примерах используется Javascript и мой клиент BaseX Node , так как я не знаком с Python API, но уверен, что то же самое относится и к Python API

...