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
Vous devez vous connecter pour publier un commentaire.
JSON est la réponse pour le stockage de base de données sur ce type de problème. Ce sera probablement le travail:
https://github.com/hay/xml2json
Et prêt à aller: