le stockage des données de xml à la base de données à l'aide de python

1) j'ai besoin d'enregistrer les données à partir du fichier xml de la base de données et afficher les données enregistrées dans l'INTERFACE utilisateur.

2) j'utilise mysql pour la base de données.

mon fichier xml est

<!-- 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>

Comment écrire views.py ou filename.py pour effectuer l'opération ci-dessus.Je suis nouveau sur python & xml.Puis-je obtenir de l'aide d'experts.

dans mon bookhandler.py j'ai fait cela,

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 = ""

mon models.py pour le stockage des données est

class Book(models.Model):
ISBN=models.AutoField(primary_key=True,unique=True)
title=models.CharField(max_length=30)
author=models.CharField(max_length=40)

J'ai lancé l'application,mais je n'obtiens pas le résultat.

  • jetez un oeil à docs.python.org/2/library/xml.etree.elementtree.html et certains MySQL connector pour python
  • ya monsieur,je l'ai déjà mentionné, mais dans la pratique je suis confus à mettre en œuvre.Donc, un exemple vivant va m'aider pour comprendre ce qu'
  • ce que j'ai essayé a été édité,merci de voir quel est le problème avec ce code
  • puis-je obtenir la réponse à la question ci-dessus
InformationsquelleAutor Monk L | 2013-04-03