This commit is contained in:
yumoqing 2024-11-11 10:19:39 +08:00
parent 030295babf
commit 33677c3413
5 changed files with 0 additions and 187 deletions

View File

@ -1,150 +0,0 @@
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

View File

@ -1,30 +0,0 @@
README.md
setup.py
sqlor/__init__.py
sqlor/aiomysqlor.py
sqlor/aiopostgresqlor.py
sqlor/aiosqliteor.py
sqlor/const.py
sqlor/crud.py
sqlor/dbpools.py
sqlor/ddl_template_mysql.py
sqlor/ddl_template_oracle.py
sqlor/ddl_template_postgresql.py
sqlor/ddl_template_sqlite3.py
sqlor/ddl_template_sqlserver.py
sqlor/filter.py
sqlor/mssqlor.py
sqlor/mysqlor.py
sqlor/oracleor.py
sqlor/postgresqlor.py
sqlor/records.py
sqlor/runsql.py
sqlor/sor.py
sqlor/sqlite3or.py
sqlor/version.py
sqlor.egg-info/PKG-INFO
sqlor.egg-info/SOURCES.txt
sqlor.egg-info/dependency_links.txt
sqlor.egg-info/requires.txt
sqlor.egg-info/top_level.txt
test/test.py

View File

@ -1 +0,0 @@

View File

@ -1,5 +0,0 @@
aiomysql
PyMySQL
aiosqlite
asyncio
jinja2

View File

@ -1 +0,0 @@
sqlor