Skip to content
Please note that GitHub no longer supports Internet Explorer.

We recommend upgrading to the latest Microsoft Edge, Google Chrome, or Firefox.

Learn more
Pure Python MySQL Client
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Small grammar chenge to ISSUE_TEMPLATE.md (#544) Jan 27, 2017
.travis
docs Drop Python 3.4 support (#762) Dec 18, 2018
pymysql Setting SO_KEEPALIVE only for TCP (#785) Mar 13, 2019
tests
.coveragerc merge from master Aug 30, 2015
.gitignore Add Pipfile.lock to gitignore Jul 4, 2018
.travis.yml travis: Remove unittest2 Dec 19, 2018
CHANGELOG Fix typo in CHANGELOG (#783) Mar 1, 2019
LICENSE Change brief description and update year in copyright notice. Oct 3, 2013
MANIFEST.in Don't install test files (#706) Jul 4, 2018
README.rst Drop Python 3.4 support (#762) Dec 18, 2018
example.py Fix PEP8 in example Jan 15, 2016
requirements-dev.txt Add pytest to requirements-dev Dec 20, 2018
setup.cfg Don't install test files (#706) Jul 4, 2018
setup.py
tox.ini

README.rst

Documentation Status https://travis-ci.org/PyMySQL/PyMySQL.svg?branch=master https://coveralls.io/repos/PyMySQL/PyMySQL/badge.svg?branch=master&service=github

PyMySQL

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

Most public APIs are compatible with mysqlclient and MySQLdb.

NOTE: PyMySQL doesn't support low level APIs _mysql provides like data_seek, store_result, and use_result. You should use high level APIs defined in PEP 249. But some APIs like autocommit and ping are supported because PEP 249 doesn't cover their usecase.

Requirements

  • Python -- one of the following:
  • MySQL Server -- one of the following:

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]

Documentation

Documentation is available online: https://pymysql.readthedocs.io/

For support, please refer to the StackOverflow.

Example

The following examples make use of a simple table

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=utf8 COLLATE=utf8_bin
AUTO_INCREMENT=1 ;
import pymysql.cursors

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

try:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', '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, ('webmaster@python.org',))
        result = cursor.fetchone()
        print(result)
finally:
    connection.close()

This example will print:

{'password': 'very-secret', 'id': 1}

Resources

License

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

You can’t perform that action at this time.