PyMySQL /PyMySQL

MySQL client library for Python

★ 7,855⑂ 1,444👁 219⑃ 532● 676▤ 13
PythonCreated 2011-07-28pymysql.readthedocs.io/
7,855
stars
+0+0+5
1,444
forks
219
watchers
532
prs
676
issues
13
releases
–
discussions

README

PyMySQL

This package contains a pure-Python MySQL and MariaDB client library, based on
PEP 249.

 Requirements

- Python -- one of the following:
  - CPython : 3.9 and newer
  - PyPy : Latest 3.x version
- MySQL Server -- one of the following:
  - MySQL LTS versions
  - MariaDB LTS versions

 Installation

Package is uploaded on PyPI.

You can install it with pip:

    $ python3 -m pip install PyMySQL

To use "sha256_password" or "caching_sha2_password" for authenticate,
you need to install additional dependency:

    $ python3 -m pip install PyMySQL[rsa]

To use MariaDB's "ed25519" authentication method, you need to install
additional dependency:

    $ python3 -m pip install PyMySQL[ed25519]

 Documentation

Documentation is available online: 

For support, please refer to the
StackOverflow.

 Example

The following examples make use of a simple table

 sql
CREATE TABLE users (
    id int(11) NOT NULL AUTO_INCREMENT,
    email varchar(255) COLLATE utf8_bin NOT NULL,
    password varchar(255) COLLATE utf8_bin NOT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
AUTO_INCREMENT=1 ;


 python
import pymysql.cursors

 Connect to the database
connection = pymysql.connect(
    host="localhost",
    user="user",
    password="passwd",
    database="db",
    cursorclass=pymysql.cursors.DictCursor,
)

with connection:
    with connection.cursor() as cursor:
         Create a new record
        sql = "INSERT INTO users (email, password) VALUES (%s, %s)"
        cursor.execute(sql, ("[email protected]", "very-secret"))

     connection is not autocommit by default. So you must commit to save
     your changes.
    connection.commit()

    with connection.cursor() as cursor:
         Read a single record
        sql = "SELECT id, password FROM users WHERE email=%s"
        cursor.execute(sql, ("[email protected]",))
        result = cursor.fetchone()
        print(result)


This example will print:

 python
{"password": "very-secret", "id": 1}


 Resources

- DB-API 2.0: 
- MySQL Reference Manuals: 
- Getting Help With MariaDB 
- MySQL client/server protocol:
  
- "Connector" channel in MySQL Community Slack:
  
- PyMySQL mailing list:
  

 License

PyMySQL is released under the MIT License. See LICENSE for more
information.

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON