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.