Metadata-Version: 2.1
Name: cator
Version: 0.0.8
Summary: a quick tool base dict for mysql and sqlite
Home-page: https://github.com/mouday/cator
Author: Peng Shiyu
Author-email: pengshiyuyx@gmail.com
License: MIT
Description: # Cator
        
        ![PyPI](https://img.shields.io/pypi/v/cator.svg)
        ![PyPI - Downloads](https://img.shields.io/pypi/dm/cator)
        ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/cator)
        ![PyPI - License](https://img.shields.io/pypi/l/cator)
        
        - Github: [https://github.com/mouday/cator](https://github.com/mouday/cator)
        - Pypi: [https://pypi.org/project/cator](https://pypi.org/project/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` |
        
        
        ## 安装
        ```bash
        pip install cator
        ```
        
        ## 使用示例
        
        指定 autocommit 模式
        
        ```python
        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类
        
        ```python
        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 类
        
        ```python
        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查询进行增强
        
        ```python
        
        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个方法即可
        
        ```python
        class Connection(ABC):
            def close(self):
                pass
        
            def commit(self):
                pass
        
            def rollback(self):
                pass
        
            def cursor(self):
                pass
        
        ```
        
        
        
        ## 注意问题
        
        1. 使用时需注意链接超时问题
        2. cator支持了autocommit自动提交，默认关闭，如有需要可以打开，
        3. 如果需要执行事务就需要关闭自动提交
        
        
        cator基于以下模块进行了改进
        
        1. myquery
        2. aquery
        3. puremysql
        4. pythink
        
Keywords: cator,mysql,sqlite,dict
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown
