0

使用以下python脚本:

#!/usr/bin/python3

import rethinkdb as r
import os
import configparser as c
from xml.dom import minidom
import urllib3

config = c.ConfigParser()
config

config.read("etc/db.py")

conn = r.connect(config.get("DB", "host"), config.get("DB", "port"), config.get("DB", "db")).repl()
http = urllib3.PoolManager()
get = http.request ("GET", 'http://s1-it.ogame.gameforge.com/api/universes.xml')

xmldoc = minidom.parseString(get.data)
itemlist = xmldoc.getElementsByTagName("universe")
id = []
href = []
a = 1
for s in itemlist:
    if a < len(itemlist):
        id.append("{ \"id\": \"" + s.attributes['id'].value + "\", \"href\": \"" + s.attributes['href'].value + "\" }, ")
    else:
        id.append("{ \"id\": \"" + s.attributes['id'].value + "\", \"href\": \"" + s.attributes['href'].value + "\" }")
    a = a + 1

data = "".join(id)

print(r.table("universes").insert([ data ]).run())

cursor = r.table("universes").run()
for document in cursor:
    print(document)

我试图解析一个 XML 文档并将其插入 rethinkdb。

当我启动 python3 file.py 时,我看到了以下错误:

预期类型 OBJECT 但找到 STRING

我的脚本有什么问题?

谢谢。

4

1 回答 1

0

当 RethinkDB 期望您尝试插入对象(Python 中的字典)或对象数组时,您正尝试将字符串作为文档插入。

您可以通过将字符串解析为 JSON 来解决此问题。

import json

data = json.loads("".join(id))

print(r.table("universes").insert(data).run())
于 2015-08-06T22:37:52.357 回答