How to store XML data into a MySQL database using Python?

XML (eXtensible Markup Language) stands tall as a widely embraced format for storing and exchanging structured information. In the realm of efficient data storage and retrieval, MySQL has earned its reputation as a go-to relational database management system (RDBMS). Python, blessed with its versatile libraries, presents an exquisite union for seamlessly handling XML and MySQL. Embark on a journey with us as we dive into the art of storing XML data in a MySQL database using Python, unraveling each step with intricacy and flair.

Step 1: Importing the Essential Libraries

Let us kickstart our endeavor by importing the indispensable libraries. In this tutorial, we shall harness the power of the following libraries:

  • xml.etree.ElementTree: This gem of a library offers a splendid interface for parsing and manipulating XML documents.

  • mysql.connector: With this nifty library, we unlock the gateway to seamless interaction between Python and MySQL.

import xml.etree.ElementTree as ET
import mysql.connector

Step 2: Parsing the XML File

We now venture into the heart of our mission, parsing the XML file that harbors the precious data we yearn to store within the MySQL database. Fear not, for the mighty ElementTree library shall guide our path.

tree = ET.parse('data.xml')
root = tree.getroot()

Here, we embark upon our journey by creating an awe-inspiring ElementTree object, meticulously parsing the XML file using the illustrious parse function.

Behold, the root variable assumes its rightful place, holding the very essence of the XML file, allowing us to traverse the intricate pathways of the XML structure.

Step 3: Establishing a Connection to the MySQL Database

Before we can breathe life into our grand vision of storing XML data, we must forge a connection to the formidable MySQL database. The radiant mysql.connector library shall guide us through this endeavor.

# Replace the placeholders with your MySQL credentials
db = mysql.connector.connect(

Armed with this knowledge, we boldly replace the placeholders with your coveted MySQL credentials, embracing the essence of the host, username, password, and the fabled target database.

Step 4: Creating a Cursor Object

To execute our sacred SQL queries, we must summon the power of the cursor object. This humble servant provides us with a plethora of methods to interact with the majestic database.

cursor = db.cursor()

Step 5: Creating the Database Table

Our path unravels further as we venture into the realm of creating a table within the mystical MySQL database, a sanctuary to hold our cherished XML data. With bated breath, we execute the sacred SQL ritual using the might of the cursor object.

# Replace 'table_name' and the column names with your desired appellations
    CREATE TABLE table_name (
        column1 datatype,
        column2 datatype,

With fervor, we call upon the forces that be, replacing the humble 'table_name' with the name that resonates within your heart's desire. Define the cherished names and datatypes for the columns that shall cradle your XML data.

Step 6: Storing XML Data in the Database

The moment of truth arrives as we extract the very essence of the XML elements, fervently nurturing them within the warm embrace of the MySQL database.

# Engage in a waltz with the XML elements, weaving them 
into the tapestry of the database
for item in root.findall('item'):
    column1_value = item.find('column1').text
    column2_value = item.find('column2').text
    # ...

    # Replace 'table_name' and the column names with your desired appellations
    query = "INSERT INTO table_name (column1, column2, ...) VALUES (%s, %s, ...)"
    values = (column1_value, column2_value, ...)
    cursor.execute(query, values)

# The time for metamorphosis has arrived; let the 
changes cascade into the realm of the database
  • Within this sacred rite, we navigate the intricate labyrinth of the XML elements, bestowing upon them their newfound earthly forms.

  • Replace the hallowed 'column1', 'column2', and so forth, with the true names of the elements nestled within your XML realm.

Step 7: Closing the Database Connection

The cycle nears its conclusion as we prepare to close the gateway, the connection to the MySQL database. Through this act, we honor the sanctity of resources and safeguard the integrity of the realm.


Closing the connection is crucial to prevent resource 
leaks and maintain the integrity of the MySQL database.


XML data has been successfully stored in the MySQL database.


As we conclude our sojourn into the realm of storing XML data in a MySQL database using Python, let us revel in the realization of our accomplishments. Python, armed with its versatile libraries, has proven to be a steadfast companion, aiding us in navigating the complexities of XML and the robustness of MySQL. By intertwining the strands of these technologies, we unlock a realm of possibilities for data analysis and manipulation, forever shaping the landscape of efficient data management.

Updated on: 28-Aug-2023


Kickstart Your Career

Get certified by completing the course

Get Started