【问题标题】:parsing of xml to mysql database将xml解析为mysql数据库
【发布时间】:2013-03-27 10:57:23
【问题描述】:

在我的应用程序中,我包含一个名为 xml 解析的函数。我正在尝试从 xml 文件中获取数据并将其保存到 mysql 数据库中。

我在谷歌引擎的帮助下编写了这个代码,但根据需要,数据没有保存在数据库中。我可以运行应用程序而不会出现任何错误。

请在下面查看我的代码

views.py

def goodsdetails(request):
    path = "{0}shop.xml".format(settings.PROJECT_ROOT)
    xmlDoc = open(path, 'r')
    xmlDocData = xmlDoc.read()
    xmlDocTree = etree.XML(xmlDocData)

    for items in xmlDocTree.iter('item'):
        item_id = items[0].text
    customername = items[1].text
        itemname = items[2].text
        location = items[3].text
        rate = items[4].text        
        shop=Shop.objects.create(item_id=item_id,customername=customername,
            itemname=itemname,location=location,rate=rate)
        shop.save()


shops = Shop.objects.all()
    context={'shops':shops}
    return render(request,'index.html', context)

我正在使用上述逻辑将数据从 xml 文件保存到数据库中。我没有收到任何错误,但它没有保存到数据库中

非常欢迎期望的答案。

*更新:*我更新了代码,xml 数据确实保存在 db 中,但是在显示相同的同时,我得到了以下 Traceback

IntegrityError at /
(1062, "Duplicate entry '101' for key 'PRIMARY'")

谢谢

【问题讨论】:

    标签: python xml django xml-parsing django-views


    【解决方案1】:

    Shop.objects.get 加载数据库中的数据。您想创建数据,只需调用Shop(item_id=item_id,customername=customername, itemname=itemname,location=location,rate=rate),然后调用shop.save()

    如果你想更新数据,你需要做这样的事情:

    shop = Shop.objects.get(tem_id=item_id)
    shop.customername = customername
    ...etc...
    shop.save()
    

    【讨论】:

    • 使用 Shop.objects.create() 我没有这样做并检查过,但如上所述,它没有给出任何错误但没有保存在数据库中,欢迎提出任何建议
    • @MonkL:那么也许您可以使用您实际尝试过的代码来更新问题?因为您问题中的代码没有尝试创建数据。
    • 您好,我纠正了上述错误,但每次刷新数据都会在 db 中复制,
    • @MonkL:是的,这是意料之中的。如果你想更新现有的对象,你也需要处理它。为此,您需要使用 get,然后更新对象并保存它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2011-01-10
    • 2012-02-07
    • 2015-06-30
    相关资源
    最近更新 更多