MysqlDB

MysqlDB具有断开自动重连特性,支持多线程下操作,内置连接池,最大连接数100

连接

  1. from feapder.db.mysqldb import MysqlDB
  2. db = MysqlDB(
  3. ip="localhost", port=3306, db="feapder", user_name="feapder", user_pass="feapder123"
  4. )

若环境变量中配置了数据库连接方式或者setting中已配置,则可不传参

  1. db = MysqlDB()

或者可以根据url连接

  1. db = MysqlDB.from_url("mysql://username:password@ip:port/db?charset=utf8mb4")

方法

MysqlDB封装了增删改查等方法,方便使用

  1. def find(self, sql, limit=0, to_json=False):
  2. """
  3. @summary:
  4. 无数据: 返回()
  5. 有数据: 若limit == 1 则返回 (data1, data2)
  6. 否则返回 ((data1, data2),)
  7. ---------
  8. @param sql:
  9. @param limit:
  10. @param to_json 是否将查询结果转为json
  11. ---------
  12. @result:
  13. """

  1. def add(self, sql, exception_callfunc=None):
  2. """
  3. Args:
  4. sql:
  5. exception_callfunc: 异常回调
  6. Returns:添加行数
  7. """
  1. def add_smart(self, table, data: Dict, **kwargs):
  2. """
  3. 添加数据, 直接传递json格式的数据,不用拼sql
  4. Args:
  5. table: 表名
  6. data: 字典 {"xxx":"xxx"}
  7. **kwargs:
  8. Returns:添加行数
  9. """
  1. def add_batch(self, sql, datas: List[Dict]):
  2. """
  3. @summary: 批量添加数据
  4. ---------
  5. @ param sql: insert ignore into (xxx, xxx) values (%s, %s, %s)
  6. @ param datas: 列表 [{}, {}, {}]
  7. ---------
  8. @result:添加行数
  9. """
  1. def add_batch_smart(self, table, datas: List[Dict], **kwargs):
  2. """
  3. 批量添加数据, 直接传递list格式的数据,不用拼sql
  4. Args:
  5. table: 表名
  6. datas: 列表 [{}, {}, {}]
  7. **kwargs:
  8. Returns: 添加行数
  9. """

更新

  1. def update(self, sql):
  2. pass
  1. def update_smart(self, table, data: Dict, condition):
  2. """
  3. 更新, 不用拼sql
  4. Args:
  5. table: 表名
  6. data: 数据 {"xxx":"xxx"}
  7. condition: 更新条件 where后面的条件,如 condition='status=1'
  8. Returns: True / False
  9. """

删除

  1. def delete(self, sql):
  2. """
  3. 删除
  4. Args:
  5. sql:
  6. Returns: True / False
  7. """

执行其他sql

  1. def execute(self, sql):
  2. pass