译者:星安果
1.序言
我们好,我是安果!
假如工程项目牵涉繁杂的 SQL 处置,就能将那些操作方式PCB成储存操作方式过程,申明入参及出参,方便快捷间接初始化
第一集该文将谈谈怎样采用 Python 继续执行存储操作方式过程
2.储存操作方式过程
储存操作方式过程,全称作 Stored Procedure
能将它看作两个USB,外部会PCB许多常用的操作方式,能间接展开初始化
储存操作方式过程的常用操作方式如下表所示:
2-1管理工作储存操作方式过程
建立查阅删掉
#1、建立两个储存操作方式过程#储存操作方式过程中文名称作:xagdelimiter $create procedure xag()begin…end $#2.1透过资料库名查阅大部份储存操作方式过程#比如说:资料库名叫xagselect name from mysql.proc where db =xag and type =PROCEDURE;#2.2查阅储存操作方式过程中状况重要信息show procedure status;#3.透过储存操作方式过程中文名称,删掉两个储存操作方式过程DROP PROCEDURE IF EXISTS xag;
当中
采用 create procedure 储存操作方式过程中文名称建立两个储存操作方式过程,接著在 begin 和 end 间撰写具体内容的操作方式方法论
2-2变量定义及赋值
采用关键字 declare 能定义两个变量
#变量定义#比如说:定义两个变量name,类型为字符串#默认值为 null…declare name varchar(255) default null;…
给变量赋值有2 种方式:普通 set 语法、select into 语法
当中
set 语法能透过表达式设置变量的值select into 语法是透过查阅资料库表,将查询结果设置到变量中
#变量定义declare name varchar(255) default null;#变量赋值# set语法set name =xag;# select into语法#查阅nametable表中的第一条记录中的name值,保存到name变量中select name into name from nametable limit 1;
2-3条件判断 if
比如说,透过年龄判断年级( if 语句)
declare age int default 23;declare grade varchar(255) default null;# if语句if age <=5 thenset grade =幼儿园;elseif age >=6 and age <12 thenset grade =小学;elseif age >=12 and age <15 thenset grade =初中;elseif age >=15 and age <18 thenset grade =高中;elseif age >=18 thenset grade =其他;end if;…
2-4循环 while
比如说,计算1-10数值的和,设置到变量 total 上
#总和declare total int default 0;#结束值declare endnumber int default 10;#临时值declare temp int default 0;# while循环while temp <= endnumber do#设置值set total = total + temp;set temp = temp +1;end while;…
2-5入参和出参
为了使撰写的储存操作方式过程更加实用,我们需要在常用储存操作方式过程时,设置出参和入参
语法格式如下表所示:
#建立两个储存操作方式过程create procedure procename([in/out/inout]参数名参数类型)
当中
默认传入值为入参,即 inout 代表出参,作为返回值返回假如设置为 inout,则代表既能作为出参,也能作为入参
3.实战一下
采用 Python 初始化储存操作方式过程非常方便快捷
首先,我们撰写两个储存操作方式过程
比如说,我这里定义了两个储存操作方式过程,传入两个入参和两个出参,将两个入参的乘积作为出参返回
#定义两个储存操作方式过程delimiter $create procedure nummulti(in num1 int,in num2 int,out multiplyresult int)begin#两个入参相乘,然后设置到出参中去set multiplyresult = num1* num2;end $
然后,在资料库中展开初始化测试
采用关键字 call 初始化储存操作方式过程,采用 select 查看返回值
#初始化储存操作方式过程call nummulti(1,3,@multiplyresult);select @multiplyresult;
接著,利用资料库配置重要信息建立连接及游标对象
import pymysqlPYMYSQLCONNDICT ={“host”:127.0.0.1,”port”:3306,”user”:root,”passwd”:root,”db”:testdb}#资料库连接dbconn = pymysql.connect(**PYMYSQLCONNDICT)#游标dbcursor = dbconn.cursor(cursor=pymysql.cursors.DictCursor)
返回值
xecute(SELECT @nummulti0,@nummulti1,@nummulti2)#出参值outputresult = dbcursor.fetchone()[@nummulti2]#出参值print(outputresult)
需要注意的是,假如储存操作方式过程牵涉到更新、新增等操作方式,需要显式初始化 commit()函数,才会真正提交到资料库中
4.最后
上面仅仅罗列出储存操作方式过程的常用语法,包含 case 条件分支处置、repeat 和 loop 循环能自己去扩展学习