斯洛
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可以使用差异数据库驱动程序使用多个数据库和差异数据库