aioodbc, aioodbc是一个从asyncio访问ODBC数据库的库

分享于 

5分钟阅读

GitHub

  繁體 雙語
aioodbc - is a library for accessing a ODBC databases from the asyncio
  • 源代码名称:aioodbc
  • 源代码网址:http://www.github.com/aio-libs/aioodbc
  • aioodbc源代码文档
  • aioodbc源代码下载
  • Git URL:
    git://www.github.com/aio-libs/aioodbc.git
    Git Clone代码到本地:
    git clone http://www.github.com/aio-libs/aioodbc
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/aio-libs/aioodbc
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    aioodbc https://travis-ci.org/aio-libs/aioodbc.svg?branch=masterhttps://coveralls.io/repos/aio-libs/aioodbc/badge.svg?branch=master&service=githubChat on Gitter

    aioodbc 是一个 python 3.5 + MODULE,它可以使用 asyncio 访问 ODBC数据库。 它依赖 awesome pyodbc 库并保持相同的外观和感觉。 aioodbc 使用异步/等待语法( PEP492 ) 编写,因此与 python 版本不兼容。 在内部,aioodbc使用线程来避免阻塞事件循环,线程并不像你想象的那样坏。 ! 其他驱动器如马达使用相同的方法。

    aioodbc 完全兼容并通过 uvloop 测试。 看看测试套件,所有测试都使用默认事件循环和 uvloop命令执行。

    支持数据库

    aioodbc 应该与 pyodbc 支持的所有数据库一起工作。 但目前,该库已经进行了测试: SQLite,MySQL和。 你可以在测试套件中添加其他的数据库。

    社区

    邮件列表:https://groups.google.com/forum/#!forum/aio-libs

    聊天室:https://gitter.im/aio-libs/Lobby

    基本示例

    基于的aioodbc 基于 pyodbc,提供相同的api,你只需要使用 yield from conn.f() 或者 await conn.f() 而不是 conn.f()

    属性不变,因此 conn.prop 是正确的,也是 conn.prop = val

    import asyncioimport aioodbc
    loop = asyncio.get_event_loop()asyncdeftest_example():
     dsn ='Driver=SQLite;Database=sqlite.db' conn =await aioodbc.connect(dsn=dsn, loop=loop)
     cur =await conn.cursor()
     await cur.execute("SELECT 42 AS age;")
     rows =await cur.fetchall()
     print(rows)
     print(rows[0])
     print(rows[0].age)
     await cur.close()
     await conn.close()
    loop.run_until_complete(test_example())

    连接池

    连接池是来自 aiopg的端口,并依赖于 PEP492功能:

    import asyncioimport aioodbc
    loop = asyncio.get_event_loop()asyncdeftest_pool():
     dsn ='Driver=SQLite;Database=sqlite.db' pool =await aioodbc.create_pool(dsn=dsn, loop=loop)
     asyncwith pool.acquire() as conn:
     cur =await conn.cursor()
     await cur.execute("SELECT 42;")
     r =await cur.fetchall()
     print(r)
     await cur.close()
     await conn.close()
     pool.close()
     await pool.wait_closed()
    loop.run_until_complete(test_pool())

    上下文管理器

    池,连接和光标对象支持上下文管理协议:

    import asyncioimport aioodbc
    loop = asyncio.get_event_loop()asyncdeftest_example():
     dsn ='Driver=SQLite;Database=sqlite.db'asyncwith aioodbc.create_pool(dsn=dsn, loop=loop) as pool:
     asyncwith pool.acquire() as conn:
     asyncwith conn.cursor() as cur:
     await cur.execute('SELECT 42 AS age;')
     val =await cur.fetchone()
     print(val)
     print(val.age)
    loop.run_until_complete(test_example())

    安装

    在linux环境中,pyodbc ( 因此 aioodbc ) 需要 unixODBC库。 你可以使用软件包管理器安装它,例如:

    $ sudo apt-get install unixodbc
    $ sudo apt-get install unixodbc-dev

    然后:

    pip install aioodbc

    运行测试

    为了测试目的,你需要安装 Docker 插件和开发要求:

    $ pip install -r requirements-dev.txt

    为了简化开发,你应该安装提供的Docker 容器。 这样你就不需要安装任何数据库或者其他系统库,所有的事情都发生在容器里。

    然后执行:

    $ make docker_build
    $ make docker_test

    测试将自动提取图像并使用所需的数据库构建容器。

    注意:运行测试需要 python 3.6或者更高版本。

    其他SQL驱动程序

    要求


    数据  acc  async  ODBC  odb  AIO  
    相关文章