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