Welcome to aiomysql’s documentation!¶
aiomysql is a library for accessing a MySQL database from the asyncio (PEP-3156/tulip) framework. It depends and reuses most parts of PyMySQL . aiomysql tries to be like awesome aiopg library and preserve same api, look and feel.
Internally aiomysql is copy of PyMySQL, underlying io calls switched
to async, basically yield from
and asyncio.coroutine
added in
proper places. sqlalchemy support ported from aiopg.
Features¶
- Implements asyncio DBAPI like interface for MySQL. It includes Connection, Cursor and Pool objects.
- Implements optional support for charming sqlalchemy functional sql layer.
Basics¶
aiomysql based on PyMySQL , and provides same api, you just need
to use yield from conn.f()
instead of just call conn.f()
for
every method.
Properties are unchanged, so conn.prop
is correct as well as
conn.prop = val
.
See example:
import asyncio
import aiomysql
loop = asyncio.get_event_loop()
@asyncio.coroutine
def test_example():
conn = yield from aiomysql.connect(host='127.0.0.1', port=3306,
user='root', password='', db='mysql',
loop=loop)
cur = yield from conn.cursor()
yield from cur.execute("SELECT Host,User FROM user")
print(cur.description)
r = yield from cur.fetchall()
print(r)
yield from cur.close()
conn.close()
loop.run_until_complete(test_example())
Installation¶
pip3 install aiomysql
Also you probably want to use aiomysql.sa
.
aiomysql.sa
module is optional and requires
sqlalchemy. You can install sqlalchemy by running:
pip3 install sqlalchemy
Source code¶
The project is hosted on GitHub
Please feel free to file an issue on bug tracker if you have found a bug or have some suggestion for library improvement.
The library uses Travis for Continious Integration and Coveralls for coverage reports.
Dependencies¶
- Python 3.3 and
asyncio
or Python 3.4+ - PyMySQL
- aiomysql.sa requires sqlalchemy.
Authors and License¶
The aiomysql
package is written by Nikolay Novik, PyMySQL and
aio-libs contributors. It’s MIT licensed (same as PyMySQL).
Feel free to improve this package and send a pull request to GitHub.