Skip to content
    geeksforgeeks
    • Interview Prep
      • DSA
      • Interview Corner
      • Aptitude & Reasoning
      • Practice Coding Problems
      • All Courses
    • Tutorials
      • Python
      • Java
      • ML & Data Science
      • Programming Languages
      • Web Development
      • CS Subjects
      • DevOps
      • Software and Tools
      • School Learning
    • Tracks
      • Languages
        • Python
        • C
        • C++
        • Java
        • Advanced Java
        • SQL
        • JavaScript
        • C#
      • Interview Preparation
        • GfG 160
        • GfG 360
        • System Design
        • Core Subjects
        • Interview Questions
        • Interview Puzzles
        • Aptitude and Reasoning
        • Product Management
        • Computer Organisation and Architecture
      • Data Science
        • Python
        • Data Analytics
        • Complete Data Science
        • Gen AI
        • Agentic AI
      • Dev Skills
        • Full-Stack Web Dev
        • DevOps
        • Software Testing
        • CyberSecurity
        • NextJS
        • Git
      • Tools
        • Computer Fundamentals
        • AI Tools
        • MS Excel & Google Sheets
        • MS Word & Google Docs
      • Maths
        • Maths For Computer Science
        • Engineering Mathematics
        • School Maths
    • Python Tutorial
    • Data Types
    • Interview Questions
    • Examples
    • Quizzes
    • DSA Python
    • Data Science
    • NumPy
    • Pandas
    • Practice
    • Django
    • Flask
    • Projects
    Open In App

    Python MySQL

    Last Updated : 25 Jul, 2025
    Comments
    Improve
    Suggest changes
    28 Likes
    Like
    Report

    MySQL is a widely used open-source relational database for managing structured data. Integrating it with Python enables efficient data storage, retrieval and manipulation within applications.

    To work with MySQL in Python, we use MySQL Connector, a driver that enables seamless integration between the two. It handles the conversion between Python and MySQL data types and is implemented in pure Python, requiring no third-party dependencies.

    Why do we need MySQL in Python

    1. Store Large Data: MySQL helps store and manage large amounts of data efficiently.
    2. Data Persistence: Data stays saved even after Python program ends.
    3. Easy Data Access: Python can easily fetch, insert, update or delete data from MySQL.
    4. Supports Multiple Users: MySQL allows many users to access and work with data at the same time.
    5. Works Well with Python Libraries: It integrates smoothly with Python tools like Pandas for data analysis.

    Installation

    To install the Python-mysql-connector module, one must have Python and PIP, preinstalled on their system. If Python and pip are already installed type the below command in the terminal.

    pip3 install mysql-connector-python

    Note: If Python is not present, go through How to install Python on Windows and Linux? and follow the instructions provided.

    python mysql connector install

    Connecting to MySQL Server

    We can connect to both local and cloud-based MySQL databases using the connect method of mysql-connector library.

    Example: Connecting to Local MySQL Database

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",                # Localhost for local connection
      user ="user",
      passwd ="password"
    )
    
    print(dataBase)
     
    # Disconnecting from the server
    dataBase.close()
    

    Output:

    <mysql.connector.connection_cext.CMySQLConnection object at 0x7f73f0191d00>

    Note: For more information, refer to Connect MySQL database using MySQL-Connector Python.

    Creating Database

    After connecting to the MySQL server let's see how to create a MySQL database using Python. For this, we will first create a cursor() object and will then pass the SQL command as a string to the execute() method. The SQL command to create a database is - 

    CREATE DATABASE DATABASE_NAME

    Example: Creating MySQL database with Python

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
    
    # creating database
    cursorObject.execute("CREATE DATABASE gfg")
    

    Output:

    Pyhton mysql create database

    Creating Tables

    For creating tables we will follow the similar approach of writing the SQL commands as strings and then passing it to the execute() method of the cursor object. SQL command for creating a table is - 

    CREATE TABLE
    (
    column_name_1 column_Data_type,
    column_name_2 column_Data_type,
    :
    :
    column_name_n column_Data_type
    );

    Example: Creating MySQL table using Python

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    # creating table 
    studentRecord = """CREATE TABLE STUDENT (
                       NAME  VARCHAR(20) NOT NULL,
                       BRANCH VARCHAR(50),
                       ROLL INT NOT NULL,
                       SECTION VARCHAR(5),
                       AGE INT
                       )"""
     
    # table created
    cursorObject.execute(studentRecord) 
     
    # disconnecting from server
    dataBase.close()
    

    Output:

    create table python mysql

    Insert Data into Tables

    To insert data into the MySQL table Insert into query is used. 

    Syntax:

    INSERT INTO table_name (column_names) VALUES (data)

    Example 1: Inserting Single Row

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    sql = "INSERT INTO STUDENT (NAME, BRANCH, ROLL, SECTION, AGE)\
    VALUES (%s, %s, %s, %s, %s)"
    val = ("Ram", "CSE", "85", "B", "19")
      
    cursorObject.execute(sql, val)
    dataBase.commit()
      
    # disconnecting from server
    dataBase.close()
    

    Output:

    insert 1 row in mysql database using Python

    Example 2: Inserting Multiple Rows

    To insert multiple values at once, executemany() method is used. This method iterates through the sequence of parameters, passing the current parameter to the execute method.

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    sql = "INSERT INTO STUDENT (NAME, BRANCH, ROLL, SECTION, AGE)\
    VALUES (%s, %s, %s, %s, %s)"
    val = [("Nikhil", "CSE", "98", "A", "18"),
           ("Nisha", "CSE", "99", "A", "18"),
           ("Rohan", "MAE", "43", "B", "20"),
           ("Amit", "ECE", "24", "A", "21"),
           ("Anil", "MAE", "45", "B", "20"), 
           ("Megha", "ECE", "55", "A", "22"), 
           ("Sita", "CSE", "95", "A", "19")]
      
    cursorObject.executemany(sql, val)
    dataBase.commit()
      
    # disconnecting from server
    dataBase.close()
    

    Output:

    python mysql insert many rows

    Fetching Data

    We can use the select query on the MySQL tables in the following ways -

    • In order to select particular attribute columns from a table, we write the attribute names.

    SELECT attr1, attr2 FROM table_name

    • In order to select all the attribute columns from a table, we use the asterisk ‘*’ symbol.

    SELECT * FROM table_name

    Example: Select data from MySQL table using Python

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    query = "SELECT NAME, ROLL FROM STUDENT"
    cursorObject.execute(query)
      
    myresult = cursorObject.fetchall()
      
    for x in myresult:
        print(x)
    
    # disconnecting from server
    dataBase.close()
    

    Output:

    python mysql select query

    Where Clause

    Where clause is used in MySQL database to filter the data as per the condition required. You can fetch, delete or update a particular set of data in MySQL database by using where clause.

    Syntax:

    SELECT column1, column2, …. columnN FROM [TABLE NAME] WHERE [CONDITION];

    Example: Where clause in MySQL using Python

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    query = "SELECT * FROM STUDENT where AGE >=20"
    cursorObject.execute(query)
      
    myresult = cursorObject.fetchall()
      
    for x in myresult:
        print(x)
    
    # disconnecting from server
    dataBase.close()
    

    Output:

    ('Rohan', 'MAE', 43, 'B', 20)
    ('Amit', 'ECE', 24, 'A', 21)
    ('Anil', 'MAE', 45, 'B', 20)
    ('Megha', 'ECE', 55, 'A', 22)

    Order By Clause

    OrderBy is used to arrange the result set in either ascending or descending order. By default, it is always in ascending order unless “DESC” is mentioned, which arranges it in descending order. “ASC” can also be used to explicitly arrange it in ascending order. But, it is generally not done this way since default already does that.

    Syntax:

    SELECT column1, column2
    FROM table_name
    ORDER BY column_name ASC|DESC;

    Example: Order By clause in MySQL using Python

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    query = "SELECT * FROM STUDENT ORDER BY NAME DESC"
    cursorObject.execute(query)
      
    myresult = cursorObject.fetchall()
      
    for x in myresult:
        print(x)
    
    # disconnecting from server
    dataBase.close()
    

    Output:

    python mysql ordery by

    Limit Clause

    The Limit clause is used in SQL to control or limit the number of records in the result set returned from the query generated. By default, SQL gives out the required number of records starting from the top but it allows the use of OFFSET keyword. OFFSET allows you to start from a custom row and get the required number of result rows.

    Syntax:

    SELECT * FROM tablename LIMIT limit;
    SELECT * FROM tablename LIMIT limit OFFSET offset;

    Example: Limit Clause in MySQL using Python

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    query = "SELECT * FROM STUDENT LIMIT 2 OFFSET 1"
    cursorObject.execute(query)
      
    myresult = cursorObject.fetchall()
      
    for x in myresult:
        print(x)
    
    # disconnecting from server
    dataBase.close()
    

    Output:

    ('Nikhil', 'CSE', 98, 'A', 18)
    ('Nisha', 'CSE', 99, 'A', 18)

    Update Data

    The update query is used to change the existing values in a database. By using update a specific value can be corrected or updated. It only affects the data and not the structure of the table. The basic advantage provided by this command is that it keeps the table accurate.

    Syntax:

    UPDATE tablename
    SET ="new value"
    WHERE ="old value";

    Example: Update MySQL table using Python

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    query = "UPDATE STUDENT SET AGE = 23 WHERE Name ='Ram'"
    cursorObject.execute(query)
    dataBase.commit()
    
    # disconnecting from server
    dataBase.close()
    

    Output:

    python mysql update table

    Delete Data from Table

    We can use the Delete query to delete data from the table in MySQL.

    Syntax:

    DELETE FROM TABLE_NAME WHERE ATTRIBUTE_NAME = ATTRIBUTE_VALUE

    Example: Delete Data from MySQL table using Python

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    query = "DELETE FROM STUDENT WHERE NAME = 'Ram'"
    cursorObject.execute(query)
    dataBase.commit()
    
    # disconnecting from server
    dataBase.close()
    

    Output:

    python mySQL delete from table

    Drop Tables

    Drop command affects the structure of the table and not data. It is used to delete an already existing table. For cases where you are not sure if the table to be dropped exists or not DROP TABLE IF EXISTS command is used. Both cases will be dealt with in the following examples.

    Syntax:

    DROP TABLE tablename;
    DROP TABLE IF EXISTS tablename;

    At first, let's see the list of tables in our database.

    python mysql drop tables

    We can see that there are two tables for students, so let's drop the second table.

    Example 1: Drop Table in MySQL using Python

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    query ="DROP TABLE Student;"
    
    cursorObject.execute(query)
    dataBase.commit()
    
    # disconnecting from server
    dataBase.close()
    

    Output:

    python mysql drop tables

    Example 2: Drop Table if exists

    Python
    # importing required libraries
    import mysql.connector
     
    dataBase = mysql.connector.connect(
      host ="localhost",
      user ="user",
      passwd ="password",
      database = "gfg"
    )
    
    # preparing a cursor object
    cursorObject = dataBase.cursor()
     
    query ="Drop Table if exists Employee;"
    
    cursorObject.execute(query)
    dataBase.commit()
    
    # disconnecting from server
    dataBase.close()
    

    The above example, will not create any error and output because we have used the Drop Table is exists query. If we will simply use the Drop table Employee then ProgrammingError: 1051 (42S02): Unknown table 'gfg.Employee' is raised.

    Python MySQL Exercises

    Working With Tables

    • How to insert values into MySQL server table using Python?
    • How to Show All Tables in MySQL using Python?
    • How to Get the Size of a Table in MySQL using Python?
    • How to Rename a MySQL Table in Python?
    • How to Copy a Table in MySQL Using Python?
    • How to Copy a Table Definition in MySQL Using Python?
    • Get the id after INSERT into MySQL database using Python
    • How to Use IF Statement in MySQL Using Python
    • Deleting Element from Table in MySql using Python
    • Grant MySQL table and column permissions using Python

    Working on Columns

    • How to Count the Number of Rows in a MySQL Table in Python?
    • Count SQL Table Column Using Python
    • How to Add a Column to a MySQL Table in Python?
    • How to Get the Minimum and maximum Value of a Column of a MySQL Table Using Python?
    • How to Perform Arithmetic Across Columns of a MySQL Table Using Python?
    • How to Concatenate Column Values of a MySQL Table Using Python?
    • Add comment to column in MySQL using Python
    • Grant MySQL table and column permissions using Python

    Python MySQL Applications and Projects

    • Create MySQL Database Login Page in Python using Tkinter
    • Extract Data from Database using MySQL-Connector and XAMPP in Python
    Create Quiz

    A

    abhishek1
    Improve

    A

    abhishek1
    Improve
    Article Tags :
    • Python
    • Python-mySQL

    Explore

      Python Fundamentals

      Python Introduction

      2 min read

      Input and Output in Python

      4 min read

      Python Variables

      4 min read

      Python Operators

      4 min read

      Python Keywords

      2 min read

      Python Data Types

      8 min read

      Conditional Statements in Python

      3 min read

      Loops in Python - For, While and Nested Loops

      5 min read

      Python Functions

      5 min read

      Recursion in Python

      4 min read

      Python Lambda Functions

      5 min read

      Python Data Structures

      Python String

      5 min read

      Python Lists

      4 min read

      Python Tuples

      4 min read

      Python Dictionary

      3 min read

      Python Sets

      6 min read

      Python Arrays

      7 min read

      List Comprehension in Python

      4 min read

      Advanced Python

      Python OOP Concepts

      11 min read

      Python Exception Handling

      5 min read

      File Handling in Python

      4 min read

      Python Database Tutorial

      4 min read

      Python MongoDB Tutorial

      3 min read

      Python MySQL

      9 min read

      Python Packages

      10 min read

      Python Modules

      3 min read

      Python DSA Libraries

      15 min read

      List of Python GUI Library and Packages

      3 min read

      Data Science with Python

      NumPy Tutorial - Python Library

      3 min read

      Pandas Tutorial

      4 min read

      Matplotlib Tutorial

      5 min read

      Python Seaborn Tutorial

      3 min read

      StatsModel Library - Tutorial

      3 min read

      Learning Model Building in Scikit-learn

      6 min read

      TensorFlow Tutorial

      2 min read

      PyTorch Tutorial

      6 min read

      Web Development with Python

      Flask Tutorial

      8 min read

      Django Tutorial | Learn Django Framework

      7 min read

      Django ORM - Inserting, Updating & Deleting Data

      4 min read

      Templating With Jinja2 in Flask

      6 min read

      Django Templates

      5 min read

      Build a REST API using Flask - Python

      3 min read

      Building a Simple API with Django REST Framework

      3 min read

      Python Practice

      Python Quiz

      1 min read

      Python Coding Practice

      1 min read

      Python Interview Questions and Answers

      15+ min read
    top_of_element && top_of_screen < bottom_of_element) || (bottom_of_screen > articleRecommendedTop && top_of_screen < articleRecommendedBottom) || (top_of_screen > articleRecommendedBottom)) { if (!isfollowingApiCall) { isfollowingApiCall = true; setTimeout(function(){ if (loginData && loginData.isLoggedIn) { if (loginData.userName !== $('#followAuthor').val()) { is_following(); } else { $('.profileCard-profile-picture').css('background-color', '#E7E7E7'); } } else { $('.follow-btn').removeClass('hideIt'); } }, 3000); } } }); } $(".accordion-header").click(function() { var arrowIcon = $(this).find('.bottom-arrow-icon'); arrowIcon.toggleClass('rotate180'); }); }); window.isReportArticle = false; function report_article(){ if (!loginData || !loginData.isLoggedIn) { const loginModalButton = $('.login-modal-btn') if (loginModalButton.length) { loginModalButton.click(); } return; } if(!window.isReportArticle){ //to add loader $('.report-loader').addClass('spinner'); jQuery('#report_modal_content').load(gfgSiteUrl+'wp-content/themes/iconic-one/report-modal.php', { PRACTICE_API_URL: practiceAPIURL, PRACTICE_URL:practiceURL },function(responseTxt, statusTxt, xhr){ if(statusTxt == "error"){ alert("Error: " + xhr.status + ": " + xhr.statusText); } }); }else{ window.scrollTo({ top: 0, behavior: 'smooth' }); $("#report_modal_content").show(); } } function closeShareModal() { const shareOption = document.querySelector('[data-gfg-action="share-article"]'); shareOption.classList.remove("hover_share_menu"); let shareModal = document.querySelector(".hover__share-modal-container"); shareModal && shareModal.remove(); } function openShareModal() { closeShareModal(); // Remove existing modal if any let shareModal = document.querySelector(".three_dot_dropdown_share"); shareModal.appendChild(Object.assign(document.createElement("div"), { className: "hover__share-modal-container" })); document.querySelector(".hover__share-modal-container").append( Object.assign(document.createElement('div'), { className: "share__modal" }), ); document.querySelector(".share__modal").append(Object.assign(document.createElement('h1'), { className: "share__modal-heading" }, { textContent: "Share to" })); const socialOptions = ["LinkedIn", "WhatsApp","Twitter", "Copy Link"]; socialOptions.forEach((socialOption) => { const socialContainer = Object.assign(document.createElement('div'), { className: "social__container" }); const icon = Object.assign(document.createElement("div"), { className: `share__icon share__${socialOption.split(" ").join("")}-icon` }); const socialText = Object.assign(document.createElement("span"), { className: "share__option-text" }, { textContent: `${socialOption}` }); const shareLink = (socialOption === "Copy Link") ? Object.assign(document.createElement('div'), { role: "button", className: "link-container CopyLink" }) : Object.assign(document.createElement('a'), { className: "link-container" }); if (socialOption === "LinkedIn") { shareLink.setAttribute('href', `https://www.linkedin.com/sharing/share-offsite/?url=${window.location.href}`); shareLink.setAttribute('target', '_blank'); } if (socialOption === "WhatsApp") { shareLink.setAttribute('href', `https://api.whatsapp.com/send?text=${window.location.href}`); shareLink.setAttribute('target', "_blank"); } if (socialOption === "Twitter") { shareLink.setAttribute('href', `https://twitter.com/intent/tweet?url=${window.location.href}`); shareLink.setAttribute('target', "_blank"); } shareLink.append(icon, socialText); socialContainer.append(shareLink); document.querySelector(".share__modal").appendChild(socialContainer); //adding copy url functionality if(socialOption === "Copy Link") { shareLink.addEventListener("click", function() { var tempInput = document.createElement("input"); tempInput.value = window.location.href; document.body.appendChild(tempInput); tempInput.select(); tempInput.setSelectionRange(0, 99999); // For mobile devices document.execCommand('copy'); document.body.removeChild(tempInput); this.querySelector(".share__option-text").textContent = "Copied" }) } }); // document.querySelector(".hover__share-modal-container").addEventListener("mouseover", () => document.querySelector('[data-gfg-action="share-article"]').classList.add("hover_share_menu")); } function toggleLikeElementVisibility(selector, show) { document.querySelector(`.${selector}`).style.display = show ? "block" : "none"; } function closeKebabMenu(){ document.getElementById("myDropdown").classList.toggle("show"); }
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Campus Training Program
  • Explore
  • POTD
  • Job-A-Thon
  • Blogs
  • Nation Skill Up
  • Tutorials
  • Programming Languages
  • DSA
  • Web Technology
  • AI, ML & Data Science
  • DevOps
  • CS Core Subjects
  • Interview Preparation
  • Software and Tools
  • Courses
  • ML and Data Science
  • DSA and Placements
  • Web Development
  • Programming Languages
  • DevOps & Cloud
  • GATE
  • Trending Technologies
  • Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
  • Preparation Corner
  • Interview Corner
  • Aptitude
  • Puzzles
  • GfG 160
  • System Design
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.
See More

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences