TorMySQL, The highest performance asynchronous MySQL driver by PyMySQL

分享于 

5分钟阅读

GitHub

  繁體
Tornado高性能MySQL Driver
  • 源代码名称:TorMySQL
  • 源代码网址:http://www.github.com/snower/TorMySQL
  • TorMySQL源代码文档
  • TorMySQL源代码下载
  • Git URL:
    git://www.github.com/snower/TorMySQL.git
    Git Clone代码到本地:
    git clone http://www.github.com/snower/TorMySQL
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/snower/TorMySQL
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    TorMySQL

    Build Status

    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 and asyncio.

    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 online for more information.

    License

    TorMySQL uses the MIT license, see LICENSE file for the details.


    相关文章