首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python导入XML intro (xmltodict)

Python导入XML intro (xmltodict)
EN

Stack Overflow用户
提问于 2015-06-19 08:11:38
回答 1查看 2.4K关注 0票数 2

我试图解析一个XML文件并将其导入SQLITE数据库。

XML如下所示:

代码语言:javascript
复制
<resultset>
    <row>
        <column name="pct_lucru">unit name</column>
        <column name="cod_comercial">00032749</column>
        <column name="denumire_med">stuff name</column>
        <column name="producator">fabri</column>
        <column name="tip_produs">koops</column>
        <column name="tva">24.000000</column>
        <column name="umc">1</column>
        <column name="furnizor">FURNIZORI DIVERSI</column>
        <column name="data_expirarii">2015-12-31</column>
        <column name="lot">80063</column>
        <column name="cant_fl">1</column>
        <column name="fractie">0</column>
        <column name="cantitate">1</column>
        <column name="pret_intr">62.930000</column>
        <column name="val_intr">62.930000</column>
        <column name="pret_fl">82.720000</column>
        <column name="valoare">82.720000</column>
    </row>
</resultset>

我有下面的python代码

代码语言:javascript
复制
import xmltodict
import sqlite3

conn = sqlite3.connect("test.sqlite")
c = conn.cursor()

with open("export.xml") as fd:
    obj = xmltodict.parse(fd.read())

for row in obj["resultset"]["row"]:
    for column in row["column"]:
        c.execute("INSERT INTO stocks ? VALUES '?'", [column["@name"], column["#text"]])
    print "item inserted \n"

它会产生以下错误

代码语言:javascript
复制
Traceback (most recent call last):
        File "dbimport.py", line 12, in <module>
            c.execute("INSERT INTO stocks ? VALUES '?'", [column["@name"], column["#text"]])
sqlite3.OperationalError: near "?": syntax error

我在这里做错什么了?我以前使用过这个方法,它运行得很好,尽管不是XML文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-19 08:13:27

?只能用于值,不能用于列名。这

代码语言:javascript
复制
INSERT INTO stocks ? VALUES '?'

是无效的。你必须用

代码语言:javascript
复制
INSERT INTO stocks (columnname) VALUES (?)

注意?周围缺少的引号。代码:

代码语言:javascript
复制
c.execute("INSERT INTO stocks ({}) VALUES (?)".format(column["@name"]), column["#text"])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30933179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档