一、昨日内容回顾

  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、视图、触发器、函数的更多相关文章

  1. python 全栈开发,Day64(视图,触发器,函数,存储过程,事务)

    昨日内容回顾 pymysql:属于python的一个模块 pip3 install pymysql conn = pymysql.connect(...,charset = 'uft8') 创建游标 ...

  2. 巨蟒python全栈开发django3:url&&视图

    1.url正则匹配分组和命名分组 2.路由分发 3.url别名和反向解析 4.httprequest和httpresponse的使用 内容回顾: .jinja2(flask框架,没有内置模板对象,需要 ...

  3. Python全栈开发:pymysql

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  4. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

  5. python全栈开发-Day12 三元表达式、函数递归、匿名函数、内置函数

    一. 三元表达式 一 .三元表达式 仅应用于: 1.条件成立返回,一个值 2.条件不成立返回 ,一个值 def max2(x,y): #普通函数定义 if x > y: return x els ...

  6. python 全栈开发,Day113(方法和函数的区别,yield,反射)

    一.方法和函数的区别 面向对象 初级 class StarkConfig(object): def __init__(self,model_class): self.model_class = mod ...

  7. python全栈开发_day9_脚本文件和函数的基本运用

    一:脚本文件 1)脚本文件的操作 import sys p=sys.argv print(p) #将python代码放到cmd中运行,在后面添加参数,会自动保存在输出的列表中,默认输出的列表中只有一个 ...

  8. 巨蟒python全栈开发-第9天 初识函数

    一.今日主要内容总览(重点) 1.什么是函数? f(x)=x+1 y=x+1 函数是对功能或者动作的封装2.函数的语法和定义 def 函数名(): 函数体 调用:函数名()3.关于函数的返回值 ret ...

  9. 巨蟒python全栈开发-第12天 生成器函数 各种推导式 yield from

    一.今日主要内容总览(重点) 1.生成器(目的:帮助我们创建对象) (1)生成器的本质就是迭代器 (2)一个一个的创建对象 (3)创建生成器的方式: 1.生成器函数 2.通过生成器表达式来获取生成器 ...

随机推荐

  1. List<> of struct with property. Cannot change value of property. why?

    这个返回如下错误:"Cannot modify the return value of 'System.Collections.Generic.List<MyStruct>.th ...

  2. button 去掉原生边框

    button按钮触发 hover 时,自带边框会显示,尤其是 button 设置圆角时,如图: 解决办法: outline: 0;

  3. ubuntu 16.04 修正网卡与ifname对应关系

    一台工控机,含有6个网口,但是名称  enp3s0 等等与网口顺序对应不起来. 现在修改脚本 /etc/udev/rules.d/70-persistent-net.rules ,如果文件不存在,可以 ...

  4. $Django 发送邮件--django封装模块和python内置SMTP模块

    一 使用SMTP模块发送邮件 import smtplib from email.mime.text import MIMEText from email.header import Header m ...

  5. Servlet随笔

    HttpServlet中的getRequestURL.getRequestURI.getContextPath方法获取的字符串为 jsp文件会被编译成一个Servlet,该Servlet继承自Http ...

  6. mysql报ERROR:Deadlock found when trying to get lock; try restarting transaction(nodejs)

    1 前言 出现错误 Deadlock found when trying to get lock; try restarting transaction.然后通过网上查找资料,重要看到有用信息了. 错 ...

  7. C# 制作向导

    1.FormBase界面:有“帮助,上一步,下一步,取消”按钮,这些按钮放置在一个Panel上. namespace DataBase {     public partial class FormB ...

  8. Linux下vsftpd的安装,Java上传文件实现。

    首先我们需要查看是否已经安装vsftpd,输入命令 :vsftpd  -v.如果出现以下信息,那么就说明已经安装vsftpd 如果没有安装,那么输入命令   : yum  install vsftpd ...

  9. requests 的基本用法

    r = requests.get('www.baidu.com') r.request.headers{'User-Agent': 'python-requests/2.18.4', 'Accept- ...

  10. Java中Super和final关键字以及异常类

    1.final类不能有子类,也就谈不上继承的说法,如果用final修饰成员变量或者局部变量,那成了常量需要制定常量的值. 2.对象的上转型对象,上转型对象不能操作子类新增的成员变量,不能调用子类新增的 ...