MySQL 原生协议

1 MySQL 连接配置

配置数据库连接方式

conf/config.py

DATABASES = {
    "default": "mysql+retrypool://root:password@127.0.0.1:3306/test?max_connections=300&stale_timeout=300",
}

Butterfly 访问 MySQL 基于 Peewee 库,Peewee 是一个简单小巧的 Python ORM,它非常容易学习,使用起来非常方便。

2 Butterfly handler 访问 MySQL 数据库

2.1 前言

以下例子 SQL 语句来自 菜鸟教程 并转为 handler 例子

备注

如果 SQL 语句中使用了 '%' 的地方,则需要使用 '%%' 代替
SQL 语句拼接时使用 format 方法拼接,而不是 %, 当然也不要使用 + 号进行拼接(比较容易 SQL 注入)

常见场景:
 (1)时间格式:
    sql = ("select date_format(c_time, '%%Y-%%m-%%d' ) days, count(*) count "
            "from "
            "qingnang_job  "
            "where job_type = 'failover' "
            "group by days;"
           )
 (2) 模糊匹配:
    sql = "SELECT * FROM EMPLOYEE WHERE FIRST_NAME LIKE '%%{first_name}%%'".format(first_name="M")

2.2 创建数据库表

code

数据库信息

2.3 数据库插入操作

code

数据库信息

2.4 数据库查询操作

output

  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象

    • record = db.my_databases["default"].execute_sql(sql).fetchone()

    • record = (u'Mac', u'Mohan', 20, u'M', 2000.0)

    • 如果执行的 SQL 没有符合条件的记录时,返回 None

  • fetchall(): 接收全部的返回结果行

    • 如果执行的 SQL 没有符合条件的记录时,返回 ()

2.4.1 模糊匹配

模糊匹配时语句,% 号需要使用 %% 转义

如果需要拼接 SQL 时,使用 format 进行拼接,而不是使用 %

2.4.2 in

数字

字符串

2.5 数据库更新操作

code

rowcount

2.6 数据库删除操作

删除操作用于删除数据表中的数据,以下实例演示了删除数据表 EMPLOYEE 中 AGE 大于 20 的所有数据:

3 脚本通过库进行访问 MySQL

3.1 使用 Butterfly 库以及配置

3.2 直接使用 peewee 库

Last updated