如何从python客户端将节点插入baseX数据库中xml文件中的现有节点?

如何从python客户端将节点插入baseX数据库中xml文件中的现有节点?,python,xml,database,basex,Python,Xml,Database,Basex,我正在尝试将字符串中的xml节点插入BaseXXML-DB中的现有xml文件,并插入现有xml节点 这可以在BaseX编辑器中工作,但在BaseX Python客户端中失败 其他查询都是从python中进行的 数据库中的我的XML之前: mydata.xml <a/> <a/> 在BaseX编辑器中执行: let $col := collection("mydb/mypath/mydata.xml") let $inp := "<b><c>

我正在尝试将字符串中的xml节点插入BaseXXML-DB中的现有xml文件,并插入现有xml节点

这可以在BaseX编辑器中工作,但在BaseX Python客户端中失败

其他查询都是从python中进行的

数据库中的我的XML之前:
mydata.xml

<a/>
<a/>

在BaseX编辑器中执行:

let $col := collection("mydb/mypath/mydata.xml")
let $inp := "<b><c>My Content</c></b>"
for $doc in $col  
return insert node fn:parse-xml($inp) into $doc//a  
let$col:=collection(“mydb/mypath/mydata.xml”)
让$inp:=“我的内容”
对于$doc,在$col中
返回insert节点fn:将xml($inp)解析为$doc//a
结果XML:
mydata.xml

<a>
  <b>
    <c>My Content</c>
  </b>
</a>

我的内容
这个很好用

但如果我从Python客户端执行同样的操作,我的数据库中的XML将保持不变:

在Python中:

session = BaseXClient.Session(DB_HOST, DB_PORT, DB_USER, DB_PASS)
session.execute("open mydb")
query = session.query(
""" 
  let $col := collection("mydb/mypath/mydata.xml")
  let $inp := "<b><c>My Content</c></b>"
  for $doc in $col
    return insert node fn:parse-xml($inp) into $doc//a
""")
session=BaseXClient.session(DB\u主机、DB\u端口、DB\u用户、DB\u通行证)
session.execute(“打开mydb”)
query=session.query(
""" 
let$col:=collection(“mydb/mypath/mydata.xml”)
让$inp:=“我的内容”
对于$doc,在$col中
返回insert节点fn:将xml($inp)解析为$doc//a
""")
结果: mydata.xml

<a/>
<a/>

Python中的DB会话工作正常,我可以毫无问题地执行其他查询

所以我不知道这里有什么问题,没有错误发生。但不会插入节点

如何将包含python内容的“和”节点插入现有的mydata.xml中,该节点中包含现有节点

谢谢

试试这个:

try:
    session = BaseXClient.Session(DB_HOST, DB_PORT, DB_USER, DB_PASS)
    query = 'let $col := collection("mydb/mypath/mydata.xml") ' \
            'let $inp := "<b><c>My Content</c></b>" ' \
            'for $doc in $col ' \
            'return insert node fn:parse-xml($inp) into $doc//a'
    queryObject = session.query(query)
    queryObject.execute()
    queryObject.close()

finally:
    if session:
        session.close()
试试看:
session=BaseXClient.session(DB\U主机、DB\U端口、DB\U用户、DB\U通道)
query='let$col:=collection(“mydb/mypath/mydata.xml”)'\
'let$inp:=“我的内容”'\
'对于$col中的$doc'\
'返回插入节点fn:将xml($inp)解析为$doc//a'
queryObject=session.query(查询)
queryObject.execute()
queryObject.close()
最后:
如果会议:
session.close()
在打开BaseX数据库时不要运行此脚本,例如,在处理Python脚本时在BaseX GUI上打开

确保总是先在GUI(在虚拟数据库中)上尝试查询,然后在Python端部署