An Asynchronous MySQL Client Engine Using Aiomysql.
Project description
asmysql
- PyPI: https://pypi.org/project/asmysql/
- GitHub: https://github.com/vastxiao/asmysql
- Gitee: https://gitee.com/vastxiao/asmysql
Introduction
asmysql is a library for using the MySQL asynchronous client, which is a wrapper for aiomysql.
Features
- Code supports type annotations.
- Very easy to use, simply inherit the AsMysql class for logical development.
- Supports automatic management of the MySQL connection pool and reconnection mechanism.
- Automatically captures and handles MysqlError errors globally.
- Separates statement execution from data retrieval.
Install
# Install from PyPI
pip install asmysql
Documentation
Quick Start
import asyncio
from asmysql import AsMysql
# Directly inherit the AsMysql class for development:
class TestAsMysql(AsMysql):
# You can define some default parameters for the Mysql instance initialization here
# The attributes are consistent with the __init__ parameters
host = '127.0.0.1'
port = 3306
user = 'root'
password = 'pass'
async def get_users(self):
# The self.client attribute is specifically used to execute SQL statements, providing aiomysql's execute and execute_many methods.
result = await self.client.execute('select user,authentication_string,host from mysql.user')
# result is specifically used to obtain execution results, providing fetch_one, fetch_many, fetch_all, and iterate methods.
# result.err is the exception object (Exception) for all MySQL execution errors.
if result.err:
print(result.err_msg)
else:
# result.iterate() is an asynchronous iterator that can fetch each row of the execution result.
async for item in result.iterate():
print(item)
async def main():
# This will create an instance and connect to MySQL:
mysql = await TestAsMysql()
await mysql.get_users()
# Remember to disconnect the MySQL connection before exiting the program:
await mysql.disconnect()
asyncio.run(main())
Support for asynchronous context managers.
import asyncio
from asmysql import AsMysql
class TestAsMysql(AsMysql):
async def get_users(self):
result = await self.client.execute('select user,authentication_string,host from mysql.user')
if result.err:
print(result.err)
else:
async for item in result.iterate():
print(item)
async def main():
# Using async with will automatically close the MySQL connection when the code exits.
async with TestAsMysql() as mysql:
await mysql.get_users()
if __name__ == '__main__':
asyncio.run(main())
More Usage
import asyncio
from asmysql import AsMysql
class TestAsMysql(AsMysql):
async def get_users(self):
result = await self.client.execute('select user,authentication_string,host from mysql.user')
if result.err:
print(result.err)
else:
return await result.fetch_all()
# When creating a MySQL instance, parameters such as MySQL address and user password can be passed in.
mysql = TestAsMysql(host='192.168.1.192', port=3306)
async def main():
# This will connect to MySQL:
await mysql.connect() # or: await mysql
print(await mysql.get_users())
# Disconnect MySQL connection:
await mysql.disconnect()
asyncio.run(main())
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
asmysql-1.0.0.tar.gz
(7.3 kB
view details)
Built Distribution
asmysql-1.0.0-py3-none-any.whl
(10.6 kB
view details)
File details
Details for the file asmysql-1.0.0.tar.gz
.
File metadata
- Download URL: asmysql-1.0.0.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7f71aa483c0a0520409872a170b5721b21acf7b2bb36b78f5b4d064ce05ba92 |
|
MD5 | 531b103e6bbd39ecf57b5ae08aced1e7 |
|
BLAKE2b-256 | eeea48fb63744513e39b213d0304a0dd21e39b49eab0c202c5c94e7528d735f4 |
File details
Details for the file asmysql-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: asmysql-1.0.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb93ef207def99b82593cfde51ea004150ec742cbe91152e7c3caf5bd25251e3 |
|
MD5 | 269e6fb2879596074761511060a7194b |
|
BLAKE2b-256 | 6b6c678325f2a76cf2a71f7b71ff34840373ceb8698147ff826cd782b2e5e565 |