Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: about 1 month 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 10 years ago)
- Default Branch: master
- Last Pushed: 2021-01-11T11:01:13.000Z (almost 4 years ago)
- Last Synced: 2024-10-11T02:41:28.319Z (about 1 month ago)
- Topics: asyncio, mariadb, mysql, pymysql, python, tornado
- Language: Python
- Homepage:
- Size: 209 KB
- Stars: 308
- Watchers: 13
- Forks: 63
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TorMySQL
[![Build Status](https://travis-ci.org/snower/TorMySQL.svg?branch=master)](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 tormysqlpool = 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 tormysqlpool = 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 tormysqlpool = 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 tormysqlpool = 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.