7
votes

Posilez des données de fichier XML dans une base de données SQLite à l'aide de Python

J'ai une question liée à certaines directives pour résoudre un problème. J'ai avec moi un fichier XML, je dois le remplir dans un système de base de données (tout ce qui pourrait être SQLite, MySQL) à l'aide de la langue de script: Python.

Quelqu'un a-t-il une idée de la façon de procéder?

  • Quelles technologies dois-je lire plus loin?
  • Quels environnements à installer?
  • Tous les didacticiels sur le même sujet?

    J'ai déjà essayé d'analyser XML à l'aide de la méthode des arbres et de saxe dans une autre langue, mais de commencer avec Python, je ne sais pas où commencer. Je sais déjà comment concevoir la base de données dont j'ai besoin.

    Une autre question, est python seul possible d'exécuter la base de données DDL DDL?


0 commentaires

4 Réponses :


1
votes

Si vous êtes habitué à DOM (arborescence) Accès à XML à partir d'une autre langue, vous pouvez trouver utile ces modules de bibliothèque standard (et leurs documents respectifs):

  • xml.dom
  • xml.dom.minidom

    Pour enregistrer les données THA sur DB, vous pouvez utiliser le module standard SQLITE3 ou rechercher une liaison à MySQL. Ou vous souhaiterez peut-être utiliser quelque chose de plus abstrait, comme Sqlalchemy ou ORM de Django.


0 commentaires

11
votes

Je vous recommande d'étudier sur Wellementtree pour l'analyse de votre fichier XML dans la mémoire (analysez-le Tout, puis émettez-le tout à un dB SQL, est probablement plus facile, mais l'élément-élément permet également une opération incrémentielle si votre fichier est énorme) - il fait partie de la bibliothèque python standard comme module xml.etree .

Je recommande SQLite3 (également dans la norme Bibliothèque Python) comme le DB relationnel de choix (si vous avez le choix), encore une fois parce que c'est pratique et facile - le DB relationnel intégré SQLite intégré sous-jacent est également bien documenté à son propre site . Si vous avez besoin d'un didacticiel général sur la façon dont Python aime se mêler à des DBS relationnels (DB-API »), il y a une belle ici .

Une fois que vous comprenez parfaitement etree et sqlite3 - et vous n'avez pas nécessairement besoin d'installer une chose pour (qui fait partie de leurs charmes ;-) - Vous êtes fondamentalement tous ensemble . (Bien sûr, une installation de SQLite elle-même (Commandline and / ou GUI Tools) afin que vous puissiez consulter vos fichiers DB et les modifier peut être agréable, de même que des éditeurs XML graphiques tels que oxygène ou xmlmind à regarder et / Ou modifiez votre XML, mais aucun type d'outil n'est du tout nécessaire , pas du tout en ce qui concerne l'utilisation de Python plutôt que d'autres langues pour l'analyse XML Ansing et SQLite; -).

et oui, vous pouvez parfaitement bien faire créer une table et d'autres requêtes DDL à partir de sqlite3 (et tout autre module de python compatible DB-API, si vous choisissez d'utiliser d'autres DBS relationnels; -).


1 commentaires

+1 pour me faire remarquer à Elementtree. p.s. "DLL interroge" une faute de frappe et censé être "requêtes DDL" comme dans la langue de définition de données?



7
votes

Vous pouvez tout faire à la main avec sqlite3 et xmlstarlet .

  • Convertir XML en CSV
  • importer CSV à dB.

    (Peut-être que ce n'est pas votre besoin. Mais c'est pratique) xxx


0 commentaires

0
votes

Je sais que c'est un ancien poste, mais je pense que cela vaut la peine de noter de faire référence aux futurs visiteurs qui ont besoin d'une solution ponctuelle: la manière la plus simple que j'ai trouvée était d'utiliser Libre Office Calc , en particulier Données -> source XML fonction.

https://help.libreoffice.org/LaTest /lo/text/scalc/01/xml_source.html

Une fois importé dans ODS, on peut l'enregistrer facilement en tant que CSV (c.-à-d. Importer sur SQLite), mais que la feuille de documents ouverte peut-elle suffire à elle-même dans de nombreux cas les besoins de l'utilisateur, c'est-à-dire à l'aide de la fonction de filtre automatique pour rechercher et filtrer les données. Je n'avais aucun problème à traiter 15k lignes.

Si la tâche doit être effectuée à plusieurs reprises, elle doit être scripté et les bibliothèques Python sont un bon moyen de le faire. Cependant, j'ai eu des problèmes avec xml.tree et dans mon cas libreoffice était un ajustement parfait.


0 commentaires