代码拉取完成,页面将自动刷新
支持 mysql和sqlite数据库, 在现有连接对象Connection 基础上进行增强
返回数据统一为dict 字典
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()
DatabaseProxy
类接收一个Connection
对象,只需要实现以下4个方法即可
class Connection(ABC):
def close(self):
pass
def commit(self):
pass
def rollback(self):
pass
def cursor(self):
pass
通过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)
import pymysql
from cator import DatabaseProxy
config = {
'host': '127.0.0.1',
'user': 'root',
'password': '123456',
'database': 'data',
'port': 3306
}
connection = pymysql.connect(**config)
proxy_db = DatabaseProxy(connection)
rows = proxy_db.select('select * from person where id = :id', {'id': 15})
print(rows)
proxy_db.close()
无论使用什么数据库驱动都支持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 |
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
cator基于以下模块进行了改进
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。