Metadata-Version: 2.1 Name: sqlor Version: 0.1.3 Summary: sqlor Home-page: https://github.com/yumoqing/sqlor Author: yumoqing Author-email: yumoqing@gmail.com Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: License :: OSI Approved :: MIT License Description-Content-Type: text/markdown Requires-Dist: aiomysql Requires-Dist: PyMySQL Requires-Dist: aiosqlite Requires-Dist: asyncio Requires-Dist: jinja2 # SQLOR SQLOR is a database api for python3, it is base on the python's DBAPI2 ## Features * Multiple database supported(Oracle, MySql, Postgresql, SQL Server * Both asynchronous API & synchronous API supported * Connection pools * Connection life cycle managements * Easy using API * Resources(connection object, cursor object) automatic recycled ## requirements * python 3.5 or above * asyncio * Oracle DBAPI2 driver(cx_Oracle) * MySQL DBAPI2 driver(mysql-connector) * Postgresql DBAPI2 driver(psycopg2-binrary) * Asynchronous MySQL driver(aiomysql) * Asynchronous Postgresql driver(aiopg) * Other driver can be easy integreated ## Using ``` 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" } }, "stock":{ "driver":"aiopg", "async_mode":True, "codeing":"utf-8", "dbname":"stock", "kwargs":{ "dbname":"stock", "user":"test", "password":"test123", "host":"127.0.0.1" } }, "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 ### Databases description data(dbdesc) sqlor uses a dbdesc data(databases description data) which description how many databases and what database will using, and them connection parameters to create a dbpools objects dbdesc data is a dict data, format of the dbdesc as follow: ``` { "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 can using multiple databases and difference databases by using difference database driver ### sql description data ## class ### DBPools ### SQLor