【问题标题】:Python import XML intro SQLITE (xmltodict)Python 导入 XML 介绍 SQLITE (xmltodict)
【发布时间】:2015-06-19 08:11:38
【问题描述】:

我正在尝试解析 XML 文件并将其导入 SQLITE 数据库。

XML 看起来像这样:

<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 代码

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"

这会产生以下错误

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 文件。

【问题讨论】:

    标签: python xml sqlite parsing xmltodict


    【解决方案1】:

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

    INSERT INTO stocks ? VALUES '?'
    

    无效。你必须使用

    INSERT INTO stocks (columnname) VALUES (?)
    

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

    c.execute("INSERT INTO stocks ({}) VALUES (?)".format(column["@name"]), column["#text"])
    

    【讨论】:

    • 谢谢。该查询现在可以工作,但它不会向数据库中插入任何内容。有趣...
    • 你在最后一次插入后提交吗?
    • 是的,我意识到我没有承诺。现在我必须调整我的代码,以便将所有内容插入一行。目前它将每个值插入到它自己的行中。我需要在循环中提升一个级别,可能:) imgr.ro/images/ab8b8cf5c0.png
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    相关资源
    最近更新 更多