a quick tool base dict for mysql and sqlite
Project description
Cator
简介
支持 mysql和sqlite数据库, 在现有连接对象Connection 基础上进行增强
返回数据统一为dict 字典
无论使用什么数据库驱动都支持4种占位符:
paramstyle | support | Meaning | example |
---|---|---|---|
qmark | OK | Question mark style | ...WHERE name=? |
numeric | - | Numeric, positional style | ...WHERE name=:1 |
named | OK | Named style | ...WHERE name=:name |
format | OK | ANSI C printf format codes | ...WHERE name=%s |
pyformat | OK | Python extended format codes | ...WHERE name=%(name)s |
安装
pip install cator
使用示例
指定 autocommit 模式
import cator
# mysql
db_url = "mysql://root:123456@127.0.0.1:3306/data?charset=utf8&autocommit=true"
# sqlite
db_url = 'sqlite:///data.db?isolation_level=null'
# open Database
db = cator.connect(db_url)
# close
db.close()
接口
Database类
class DatabaseProxy:
def table(self, table_name):
pass
def select(self, operation, params=()):
pass
def select_one(self, operation, params=()):
pass
def update(self, operation, params=()):
pass
def delete(self, operation, params=()):
pass
def insert(self, operation, params: Union[list, dict]):
pass
def insert_one(self, operation, params: Union[tuple, dict] = ()):
pass
def before_execute(self, operation, params=None):
pass
def after_execute(self, cursor):
pass
def execute(self, operation, params=None):
pass
def cursor(self, *args, **kwargs):
"""return cursor object"""
def connect(self):
"""connect database"""
def close(self):
"""close connection"""
def commit(self):
pass
def rollback(self):
pass
Table 类
class Table:
@property
def total(self):
pass
def insert(self, data: Union[dict, list]):
pass
def insert_one(self, data: dict):
pass
def delete_by_id(self, uid):
pass
def update_by_id(self, uid, data):
pass
def select_by_id(self, uid):
pass
扩展 peewee
通过DatabaseProxy
类,使得peewee原生sql查询进行增强
from peewee import MySQLDatabase
from cator import DatabaseProxy
config = {
'host': 'localhost',
'port': 3306,
'user': 'root',
'password': '123456',
'database': 'data',
'charset': 'utf8mb4',
}
db = MySQLDatabase(**config)
# use cator database proxy
db_proxy = DatabaseProxy(db)
DatabaseProxy
类接收一个Connection
对象,只需要实现以下4个方法即可
class Connection(ABC):
def close(self):
pass
def commit(self):
pass
def rollback(self):
pass
def cursor(self):
pass
注意问题
- 使用时需注意链接超时问题
- cator支持了autocommit自动提交,默认关闭,如有需要可以打开,
- 如果需要执行事务就需要关闭自动提交
cator基于以下模块进行了改进
- myquery
- aquery
- puremysql
- pythink
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cator-0.0.9.tar.gz
(10.1 kB
view details)
Built Distribution
cator-0.0.9-py3-none-any.whl
(14.9 kB
view details)
File details
Details for the file cator-0.0.9.tar.gz
.
File metadata
- Download URL: cator-0.0.9.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 372100640867e3864766b6978a3a2cc9eda1a2dad7df7afcfa3591db90c109b8 |
|
MD5 | badfb69517c75552591b98216874dbb2 |
|
BLAKE2b-256 | 1044c5ac696188d8161ca459a4688bd49c5f84f6f700662c1e5e1173d5e54d7d |
File details
Details for the file cator-0.0.9-py3-none-any.whl
.
File metadata
- Download URL: cator-0.0.9-py3-none-any.whl
- Upload date:
- Size: 14.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b733330e2215fe5c9dbf7b175f1dafc0737f27c292390c23a6e35bdfd9869a9 |
|
MD5 | 02eb54861791653b0597bf2bd50d64d3 |
|
BLAKE2b-256 | 6b4ba0625d6ada384ee6229462e2db7e606a112678c4bcc2acb3c1c39275b12e |