A fast asyncio MySQL driver
Project description
asyncmy - A fast asyncio MySQL driver
Introduction
asyncmy
is a fast asyncio MySQL driver, which reuse most of pymysql and rewrite
core with cython to speedup.
Features
Benchmark
The result comes from benchmark, we can know asyncmy
performs well when compared to other drivers.
The device is MacBook Pro (13-inch, M1, 2020) 16G and MySQL version is 8.0.23.
Install
Just install from pypi:
> pip install asyncmy
Usage
Use connect
from asyncmy import connect
from asyncmy.cursors import DictCursor
import asyncio
async def run():
conn = await connect()
async with conn.cursor(cursor=DictCursor) as cursor:
await cursor.execute("create database if not exists test")
await cursor.execute(
"""CREATE TABLE if not exists test.asyncmy
(
`id` int primary key auto_increment,
`decimal` decimal(10, 2),
`date` date,
`datetime` datetime,
`float` float,
`string` varchar(200),
`tinyint` tinyint
)"""
)
if __name__ == '__main__':
asyncio.run(run())
Use pool
import asyncmy
import asyncio
async def run():
pool = await asyncmy.create_pool()
async with pool.acquire() as conn:
async with conn.cursor() as cursor:
await cursor.execute("SELECT 1")
ret = await cursor.fetchone()
assert ret == (1,)
if __name__ == '__main__':
asyncio.run(run())
Replication
from asyncmy import connect
from asyncmy.replication import BinLogStream
import asyncio
async def run():
conn = await connect()
ctl_conn = await connect()
stream = BinLogStream(
conn,
ctl_conn,
1,
master_log_file="binlog.000172",
master_log_position=2235312,
resume_stream=True,
blocking=True,
)
await stream.connect()
async for event in stream:
print(event)
if __name__ == '__main__':
asyncio.run(run())
ThanksTo
asyncmy is build on top of these nice projects.
- pymysql, a pure python MySQL client.
- aiomysql, a library for accessing a MySQL database from the asyncio.
- python-mysql-replication, pure Python Implementation of MySQL replication protocol build on top of PyMYSQL.
License
This project is licensed under the Apache-2.0 License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
asyncmy-0.1.7.tar.gz
(60.0 kB
view hashes)
Built Distribution
Close
Hashes for asyncmy-0.1.7-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79caa320cc105c0608a7d9e6cce9c6e29c55f77ef87b0f2fef654f004804c3b8 |
|
MD5 | c9f0d58cfee6828e4ccc439e82f167d4 |
|
BLAKE2b-256 | 735c860c18088bb98e3d1288ad654190a7d342aea64cf1cbc1a34a26b87862e3 |