python全栈开发day57- pymysql、视图、触发器、函数
一、昨日内容回顾
1.单表查询
优先级
from
where
group by
having
select
distinct
order by
limit
2 . 多表查询
inner join。。。on
left join 。。。on
rigth join 。。。on
二、今日内容总结
1.pymysql
(1) 建立连接
conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='practice',charset='utf8')
(2)实例化游标
cursor = conn.cursor() # 里边可以传参cursor=pymsql.cursors.DictCursor
(3) 定义sql语句
(4) cursor.excute(sql)
cursor.excutemany(sql,[(1,'a'),(2,'b')]) # 返回值为操作成功影响行数
(5) 取值
cursor.fetone()
cursor.fetall()
cursor.fetmany()
(6) 调游标位置
cursor.scroll(1,mode='relative')
cursor.scroll(1,mode='absolute')
(7) cursor.close()
conn.close()
2.视图
create view 视图名 as select XXX from xxx。。。
alter view 视图名 as select 。。。。
drop view 视图名 。。。。。
3.触发器 insert(new),delete(old),update(new,old)
create trigger 触发器名 before insert on 表名
for each row
begin
。。。。
end
create trigger t1 after insert on user for each row set new.name = Upper(new.name);
将插入用户的名字大写
create table del_info(del_name varchar(32),del_time datetime); create trigger t_del before delete on user for each row
begin
insert into del_info values(old.name,now());
end
删除数据前记录删除用户名和删除事件
4.函数
1) 一堆内置函数
重点:
date_formart(日期,‘%Y-%m’) 。。。。。。
2) 自定义函数
create function myfunc(a int,b int) returns int
begin
declare c int;
set c=a+b;
return c;
end;
删除函数
drop function myfunc
执行函数
select myfunc(1,2)
5. 存储过程
create table product(
id int primary key,
name varchar(32) not null,
price int
);
insert into product values(1,'apple',18),(2,'banana',6); create procedure productprice(
out pmax decimal(8,2),
out pmin decimal(8,2),
out pavg decimal(8,2)
)
begin
select Max(price) into pmax from product;
select Min(price) into pmin from product;
select Avg(price) into pavg from product;
end; call productprice(@pmax,@pmin,@pavg);
存储过程
6.游标
create procedure riseinprice( in percent decimal(4,2))
begin
declare o int;
declare name varchar(32);
declare done boolean default 0;
declare riseprice CURSOR for
select id from product;
declare continue handler for sqlstate '' set done=1;
open riseprice;
repeat
fetch riseprice into o;
update product set price=50 where id = o;
until done END repeat;
close riseprice;
end;
7 事务
start transaction:
.....
.....
savepoint delete1
..... commit/rollback/rollback to delete1
三、预习和扩展
python全栈开发day57- pymysql、视图、触发器、函数的更多相关文章
- python 全栈开发,Day64(视图,触发器,函数,存储过程,事务)
昨日内容回顾 pymysql:属于python的一个模块 pip3 install pymysql conn = pymysql.connect(...,charset = 'uft8') 创建游标 ...
- 巨蟒python全栈开发django3:url&&视图
1.url正则匹配分组和命名分组 2.路由分发 3.url别名和反向解析 4.httprequest和httpresponse的使用 内容回顾: .jinja2(flask框架,没有内置模板对象,需要 ...
- Python全栈开发:pymysql
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)
昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...
- python全栈开发-Day12 三元表达式、函数递归、匿名函数、内置函数
一. 三元表达式 一 .三元表达式 仅应用于: 1.条件成立返回,一个值 2.条件不成立返回 ,一个值 def max2(x,y): #普通函数定义 if x > y: return x els ...
- python 全栈开发,Day113(方法和函数的区别,yield,反射)
一.方法和函数的区别 面向对象 初级 class StarkConfig(object): def __init__(self,model_class): self.model_class = mod ...
- python全栈开发_day9_脚本文件和函数的基本运用
一:脚本文件 1)脚本文件的操作 import sys p=sys.argv print(p) #将python代码放到cmd中运行,在后面添加参数,会自动保存在输出的列表中,默认输出的列表中只有一个 ...
- 巨蟒python全栈开发-第9天 初识函数
一.今日主要内容总览(重点) 1.什么是函数? f(x)=x+1 y=x+1 函数是对功能或者动作的封装2.函数的语法和定义 def 函数名(): 函数体 调用:函数名()3.关于函数的返回值 ret ...
- 巨蟒python全栈开发-第12天 生成器函数 各种推导式 yield from
一.今日主要内容总览(重点) 1.生成器(目的:帮助我们创建对象) (1)生成器的本质就是迭代器 (2)一个一个的创建对象 (3)创建生成器的方式: 1.生成器函数 2.通过生成器表达式来获取生成器 ...
随机推荐
- Java文件复制
主要是工作代码,无解释. /** * 将文件或文件夹source复制到dest * <br>目标文件检测: * <br> a.当文件不存在时:需要创建文件 * <br&g ...
- 欲善其工必先利其器-----ThinkPad E430加装SSD固态硬盘和内存
大概13年5月左右入手的小黑ThinkPad E430 当时辞职换工作换城市所以预算有限,4k左右大洋买下了这款笔记本电脑.3年左右的时间,一直使用单位电脑,偶尔使用小黑真心崩溃.你会发现你会有放弃使 ...
- jquery中的attr与prop的区别,什么时候用attr,什么时候用prop
只要有 Boolean() 属性的,简单说就是具有true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),(其实这些都是表单类的), ...
- 对象Object
功能分类 1. 创建对象 把各对数自身拥有的可枚举属性复制到第一个对象并返回:obj = Object.assign(o1, o2, o3),o1=obj ...
- 在java中,OOA是什么?OOD是什么?OOP是什么?
注:本文来源于< 在java中,OOA是什么?OOD是什么?OOP是什么?> 在java中,OOA是什么?OOD是什么?OOP是什么? OOA Object-Oriented Anal ...
- TeamLab安装及使用
http://blog.csdn.net/crazin/article/details/9529061 最近想装个项目管理管理系统方便项目管理,调研了下这方面开源的软件还是比较多的,国内的有禅道,试用 ...
- Confluence 6 安装 PostgreSQL
如果你的系统中还没有安装 PostgreSQL 数据库,你需要先下载后进行安装. 在安装 PostgreSQL 时候的一些小经验: 在安装的时候提供的 密码(password )是针对 'postg ...
- Swift DispatchQueue
延迟2s执行 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+2)
- 【mongo】可以用localhost启动,无法用ip启动问题的解决
问题: mongo安装在a.b.c.d机器上,启动mongo服务后, mongo localhost:27017可以进入数据库, mongo 127.0.0.1:27017也可以进入数据库 mongo ...
- 开放系统的直连式存储(Direct-Attached Storage,简称DAS)
开放系统的直连式存储(Direct-Attached Storage,简称DAS)已经有近四十年的使用历史,随着用户数据的不断增长,尤其是数百GB以上时,其在备份.恢复.扩展.灾备等方面的问题变得日益 ...