斯洛

sqlor的Python项目详细描述


sqlor

sqlor是python3的数据库api,它基于python的dbapi2

功能

  • 支持多个数据库(Oracle、MySQL、PostgreSQL、SQL Server
  • 支持异步API和同步API
  • 连接池
  • 连接生命周期管理
  • 易于使用API
  • 资源(连接对象、光标对象)自动回收

要求

  • python 3.5或更高版本
  • 异步
  • Oracle DBAPI2驱动程序(CX_Oracle)
  • mysql dbapi2驱动程序(mysql连接器)
  • PostgreSQL DBAPI2驱动程序(psycopg2二进制)
  • 异步mysql驱动程序(aimysql)
  • 异步PostgreSQL驱动程序(AIOPG)
  • 其他驱动程序可以轻松集成

使用

import asyncio

from sqlor.dbpools  import DBPools

dbs={
        "aiocfae":{
                "driver":"aiomysql",
                "async_mode":True,
                "coding":"utf8",
                "dbname":"cfae",
                "kwargs":{
                        "user":"test",
                        "db":"cfae",
                        "password":"test123",
                        "host":"localhost"
                }
        },
        "cfae":{
                "driver":"mysql.connector",
                "coding":"utf8",
                "dbname":"cfae",
                "kwargs":{
                        "user":"test",
                        "db":"cfae",
                        "password":"test123",
                        "host":"localhost"
                }
        }
}

loop = asyncio.get_event_loop()
pool = DBPools(dbs,loop=loop)

async def testfunc():
        @pool.runSQL
        def sql(db,ns,callback):
                return {
                "sql_string":"select * from product",
        }
        x  = await sql('cfae',{},print)
        x  = await sql('aiocfae',{},print)

loop.run_until_complete(testfunc())

API

数据库描述数据(dbdesc)

sqlor使用dbdesc数据(数据库描述数据),其中 将使用多少个数据库和哪些数据库,以及它们的连接参数来创建dbpools对象

dbdesc data是dict数据,dbdesc的格式如下:

{
        "aiocfae":{			# name to identify a database connect
                "driver":"aiomysql",	# database dbapi2 driver package name 
                "async_mode":True,	# indicte this connection is asynchronous mode
                "coding":"utf8",	# charset coding
                "dbname":"cfae",	# database real name
                "kwargs":{		# connection parameters
                        "user":"test",
                        "db":"cfae",
                        "password":"test123",
                        "host":"localhost"
                }
        },
        "cfae":{
                "driver":"mysql.connector",
                "coding":"utf8",
                "dbname":"cfae",
                "kwargs":{
                        "user":"test",
                        "db":"cfae",
                        "password":"test123",
                        "host":"localhost"
                }
        }
}

sqlor可以使用差异数据库驱动程序使用多个数据库和差异数据库

SQL描述数据

数据库池

Sqlor

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java测试访问令牌过滤器   close()上的java Apache POI运行时异常   java为什么Eclipse中的GWT总是显示错误404?   java从socket python服务器接收消息   java mediaRecorder:start()函数失败   不关闭DB连接可能是Tomcat上Java堆溢出的原因吗?   java JFrame无法关闭   java BigQuery加载本地文件不起作用,位置有问题   java可以在递归任务中使用吗?   servlets如何从JSESSIONID加载Java HttpSession?   java将JFileChooser与PDFBox一起使用时,文件不会另存为pdf,但保存时不带扩展名   java将处理结果存储在表中   java算法发现循环世界中重叠间隔的持续时间(24小时)   在windows 10上双击Eclipse安装程序可执行文件(eclipseinstjrewin64.exe)后,java不会发生任何事情   java编译和部署自定义Solr请求处理程序   Java/Android崩溃ApacheCommonsio2。4.jar   spring web应用程序中的java集成收件箱功能   java Grizzly、Jersey和Spring自动布线问题   java如何在pom中添加jar文件依赖项。xml   关于Android中大量GUI更新编码的java概念(GUI处理程序)