https://github.com/snower/tormysql
The highest performance asynchronous MySQL driver by PyMySQL
https://github.com/snower/tormysql
asyncio mariadb mysql pymysql python tornado
Last synced: 9 months ago
JSON representation
The highest performance asynchronous MySQL driver by PyMySQL
- Host: GitHub
- URL: https://github.com/snower/tormysql
- Owner: snower
- License: mit
- Created: 2014-08-08T09:00:28.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2021-01-11T11:01:13.000Z (almost 5 years ago)
- Last Synced: 2025-04-04T13:13:27.601Z (9 months ago)
- Topics: asyncio, mariadb, mysql, pymysql, python, tornado
- Language: Python
- Homepage:
- Size: 209 KB
- Stars: 307
- Watchers: 13
- Forks: 63
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TorMySQL
[](https://travis-ci.org/snower/TorMySQL)
The highest performance asynchronous MySQL driver.
PyPI page: https://pypi.python.org/pypi/tormysql
# About
Presents a Future-based API and greenlet for non-blocking access to MySQL.
Support both [tornado](https://github.com/tornadoweb/tornado) and [asyncio](https://docs.python.org/3/library/asyncio.html).
# Installation
```
pip install TorMySQL
```
# Used Tornado
## example pool
```
from tornado.ioloop import IOLoop
from tornado import gen
import tormysql
pool = tormysql.ConnectionPool(
max_connections = 20, #max open connections
idle_seconds = 7200, #conntion idle timeout time, 0 is not timeout
wait_connection_timeout = 3, #wait connection timeout
host = "127.0.0.1",
user = "root",
passwd = "TEST",
db = "test",
charset = "utf8"
)
@gen.coroutine
def test():
with (yield pool.Connection()) as conn:
try:
with conn.cursor() as cursor:
yield cursor.execute("INSERT INTO test(id) VALUES(1)")
except:
yield conn.rollback()
else:
yield conn.commit()
with conn.cursor() as cursor:
yield cursor.execute("SELECT * FROM test")
datas = cursor.fetchall()
print datas
yield pool.close()
ioloop = IOLoop.instance()
ioloop.run_sync(test)
```
## example helpers
```
from tornado.ioloop import IOLoop
from tornado import gen
import tormysql
pool = tormysql.helpers.ConnectionPool(
max_connections = 20, #max open connections
idle_seconds = 7200, #conntion idle timeout time, 0 is not timeout
wait_connection_timeout = 3, #wait connection timeout
host = "127.0.0.1",
user = "root",
passwd = "TEST",
db = "test",
charset = "utf8"
)
@gen.coroutine
def test():
tx = yield pool.begin()
try:
yield tx.execute("INSERT INTO test(id) VALUES(1)")
except:
yield tx.rollback()
else:
yield tx.commit()
cursor = yield pool.execute("SELECT * FROM test")
datas = cursor.fetchall()
print datas
yield pool.close()
ioloop = IOLoop.instance()
ioloop.run_sync(test)
```
# Used asyncio alone
## example pool
```
from asyncio import events
import tormysql
pool = tormysql.ConnectionPool(
max_connections = 20, #max open connections
idle_seconds = 7200, #conntion idle timeout time, 0 is not timeout
wait_connection_timeout = 3, #wait connection timeout
host = "127.0.0.1",
user = "root",
passwd = "TEST",
db = "test",
charset = "utf8"
)
async def test():
async with await pool.Connection() as conn:
try:
async with conn.cursor() as cursor:
await cursor.execute("INSERT INTO test(id) VALUES(1)")
except:
await conn.rollback()
else:
await conn.commit()
async with conn.cursor() as cursor:
await cursor.execute("SELECT * FROM test")
datas = cursor.fetchall()
print(datas)
await pool.close()
ioloop = events.get_event_loop()
ioloop.run_until_complete(test)
```
## example helpers
```
from asyncio import events
import tormysql
pool = tormysql.helpers.ConnectionPool(
max_connections = 20, #max open connections
idle_seconds = 7200, #conntion idle timeout time, 0 is not timeout
wait_connection_timeout = 3, #wait connection timeout
host = "127.0.0.1",
user = "root",
passwd = "TEST",
db = "test",
charset = "utf8"
)
async def test():
async with await pool.begin() as tx:
await tx.execute("INSERT INTO test(id) VALUES(1)")
cursor = await pool.execute("SELECT * FROM test")
datas = cursor.fetchall()
print(datas)
await pool.close()
ioloop = events.get_event_loop()
ioloop.run_until_complete(test)
```
# Resources
You can read [PyMySQL Documentation](http://pymysql.readthedocs.io/) online for more information.
# License
TorMySQL uses the MIT license, see LICENSE file for the details.