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和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)
我运行了应用程序,但没有得到结果。