Go to file
2024-12-04 18:48:58 +08:00
dataloader no history 2024-09-23 14:19:50 +08:00
docs no history 2024-09-23 14:19:50 +08:00
sqlor bugfix 2024-12-04 18:48:39 +08:00
test no history 2024-09-23 14:19:50 +08:00
.DS_Store no history 2024-09-23 14:19:50 +08:00
build.sh no history 2024-09-23 14:19:50 +08:00
databases.json no history 2024-09-23 14:19:50 +08:00
README.md no history 2024-09-23 14:19:50 +08:00
requirements.txt no history 2024-09-23 14:19:50 +08:00
setup.py no history 2024-09-23 14:19:50 +08:00

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