1)我需要将数据从xml文件保存到数据库,并在UI中显示保存的数据。
2)我正在使用mysql作为数据库。
我的xml文件是
<!-- books.xml -->
<catalog>
<book isbn="1-880985-26-8">
<title>The Consumer</title>
<author>M. Gira</author>
</book>
<book isbn="0-679775-43-9">
<title>The Wind-Up Bird Chronicle</title>
<author>Haruki Murakami</author>
</book>
<book isbn="0-679775-13-6">
<title>Deccon Chronicle</title>
<author>Kulkarni</author>
</book>
<book isbn="0-679775-93-6">
<title>Python</title>
<author>David varner</author>
</book>
</catalog>
如何编写views.py或filename.py来执行上述操作。我是python&amp;的新手。 xml。我可以得到专家的帮助。
实际上在我的bookhandler.py中我这样做了,
from sqlalchemy import *
from sqlalchemy.orm import *
import xml.sax.handler
pg_db = create_engine('postgres:///testdb?user=homer')
metadata = MetaData(pg_db)
books_table = Table('books', metadata, autoload=True)
class Book(object):
pass
mapper(Book, books_table)
class BookHandler(xml.sax.handler.ContentHandler):
def __init__(self):
self.buffer = ""
self.inField = 0
self.session = create_session(bind=pg_db)
def startElement(self, name, attributes):
if name == "book":
self.isbn = attributes["isbn"]
elif name == "title":
self.inField = 1
elif name == "author":
self.inField = 1
def characters(self, data):
if self.inField:
self.buffer += data
def endElement(self, name):
if name == "book":
self.session.begin()
self.newbook = Book()
self.newbook.isbn = self.isbn
self.newbook.title = self.title
self.newbook.author = self.author
self.session.save(self.newbook)
self.session.commit()
elif name == "title":
self.inField = 0
self.title = self.buffer
elif name == "author":
self.inField = 0
self.author = self.buffer
self.buffer = ""
我的models.py用于存储数据
class Book(models.Model):
ISBN=models.AutoField(primary_key=True,unique=True)
title=models.CharField(max_length=30)
author=models.CharField(max_length=40)
我运行了应用程序,但我没有得到结果。
答案 0 :(得分:1)
JSON是针对此类问题的数据库存储的答案。这可能会奏效:
https://github.com/hay/xml2json
python setup.py install
准备好了:
import xml2json
import json
s = '''<?xml version="1.0"?>
<catalog>
<book isbn="1-880985-26-8">
<title>The Consumer</title>
<author>M. Gira</author>
</book>
<book isbn="0-679775-43-9">
<title>The Wind-Up Bird Chronicle</title>
<author>Haruki Murakami</author>
</book>
<book isbn="0-679775-13-6">
<title>Deccon Chronicle</title>
<author>Kulkarni</author>
</book>
<book isbn="0-679775-93-6">
<title>Python</title>
<author>David varner</author>
</book>
</catalog>'''
### Storage data:
print xml2json.xml2json(s)
### Parsing to use:
json_data = json.loads(xml2json.xml2json(s))