为了提取XML数据,我使用
xml.etree.ElementTree
解析XML树并根据需要提取元素。虽然我正在做许多事情,但基本操作是将特定元素(字符串或整数)放入多个字典之一。经过更多处理后,我有许多需要插入到数据库中的字典。对于任何单个XML文件,我可能会在3个表中产生8-10,000行(或查询)。
在测试时,我将输出到SQL文件,然后手动运行查询。如果我有很多XML文件,这显然行不通。
因此,我尝试使用
psycopg2
自动化此过程。根据这个stackoverflow问题,我已尝试编写以下代码:QueryData = ','.join(cur.mogrify('(%s,%s,%s)', row) for row in myData)
cur.execute('INSERT INTO DBTABLE' + QueryData)
cur.commit()
其中myData
是一个元组列表[(a,b,c),(a,b,c),(a,b,c)...]
,其内容是由xml.etree.ElementTree
提取的数据和我自己计算的值的组合。
然而,当我尝试实际执行上述代码时,却会出现以下错误:
TypeError: sequence item 0: expected str instance, bytes found
如果我尝试将我的数据(每个元组元素)转换为str()
,则会得到以下结果:
TypeError: encoding without a string argument
我是不是完全走错了路?我该如何做我需要的事情?我正在使用Python3。
附加信息
有人要求我展示数据的示例。
这是最简单的形式,它包含3个整数值以放入表格中。它的格式为:(document_id,item_index,item_code)
一个典型的示例是:(937, 138, 681)
我通常尝试转换的方法是:
(str(document_id),str(item_index),str(item_code))
我也尝试过另一种方式:
(bytes(document_id,'utf-8'),bytes(item_index,'utf-8'),bytes(item_code,'utf-8'))
后者还会报错:TypeError:缺少字符串参数的编码