Pure Python MySQL Driver
Project description
Trio-MySQL
This package contains a pure-Python and Trio-enhanced MySQL client library. It is a mostly-straightforward clone of PyMySQL, adding async methods compatible with the Trio framework.
NOTE: Trio-MySQL tries to adhere to (an async version of) the high level database APIs defined in PEP 249. Some differences, however, are unavoidable.
Requirements
Installation
Package is uploaded on PyPI.
You can install it with pip:
$ python3 -m pip install trio_mysql
To use “sha256_password” or “caching_sha2_password” for authenticate, you need to install additional dependency:
$ python3 -m pip install trio_mysql[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: http://trio_mysql.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=utf8mb4 COLLATE=utf8mb4_bin
AUTO_INCREMENT=1 ;
import trio_mysql.cursors
# Connect to the database
connection = trio_mysql.connect(host='localhost',
user='user',
password='passwd',
charset='utf8mb4',
database='db',
cursorclass=trio_mysql.cursors.DictCursor)
async with connection as conn:
async with conn.cursor() as cursor:
# Create a new record
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
await cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
# connection is not autocommit by default. So you must commit to save
# your changes.
conn.commit()
# You can set up a transaction:
async with conn.transaction():
async with conn.cursor() as cursor:
# Create a new record
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
await cursor.execute(sql, ('webmistress@python.org', 'totally-secret'))
# ... or use a cursor directly, for autocommit:
async with conn.cursor() as cursor:
# Read a single record
sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
await cursor.execute(sql, ('webmaster@python.org',))
result = await cursor.fetchone()
print(result)
This example will print:
{'password': 'very-secret', 'id': 1}
Resources
DB-API 2.0: https://www.python.org/dev/peps/pep-0249/
MySQL Reference Manuals: https://dev.mysql.com/doc/
MySQL client/server protocol: https://dev.mysql.com/doc/internals/en/client-server-protocol.html
“Connector” channel in MySQL Community Slack: https://lefred.be/mysql-community-on-slack/
Trio chat: https://gitter.im/python-trio/general
License
Trio-MySQL is released under the MIT License. See LICENSE for more information.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for trio_mysql-1.0.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a59acd39f439219ee87e0c23f507cecc18f7b282fca1f4253c34cef44d942ab |
|
MD5 | 29232ebe0935a122ffb9f3a22bbb7dbc |
|
BLAKE2b-256 | c179c62d91546a81b8fab18278d57aac8533e415eecd30078f2b5da79a4e63bd |