10月30日学习内容整理:pymysql模块补充

1、sql注入:

》》以用户登录为例,利用mysql中--两个横杠注释的功能,可以在输入用户名的时候在后面加上--这样就将密码隐藏甚至加上其它逻辑运算使得用户名也可以被隐藏,这样就导致数据库很容易就被破解。

》》像这样改变查询逻辑的做法就是sql注入

》》为了规避这种风险,我们通常使用execute函数来做字符串的拼接,不要再自己做字符串拼接,同时execute也会为我们规避掉sql注入的问题

2、拿游标:

cur=con.cursor()用连接去调用

》》括号里可以写参数:cursor=pymysql.cursors.DictCursor   意思就是结果会以字典的形式输出

3、移动游标位置

》》相对绝对位置移动:

cur.scroll(2,'absolute')  这个2就代表遍历到第2条后开始读结果

从第3条结果开始取,每次使用absolute移动都是从0开始,也就是从结果的第一条开始

》》相对当前位置移动

cur.scroll(2,'relative') 这个2就代表遍历到第2条后开始读结果

从第3条结果开始取,每次使用relative移动游标都是从当前位置开始

4、获取自增ID的最后一个字段值和最新插入的自增字段

cur.lastrowid     用游标去调用,获取自增ID的最后一个字段值

con.insert_id()    用连接去调用,获取最新插入的自增id

注意这两个方法要在commit之前用,否则只会返回0或None,最好就是插入之后就要马上查,若中间有查询操作就是None,中间最好不要有其他操作

5、调用存储过程:

游标调用

cur.callproc(存储过程名(字符串形式),(参数,))   参数以元组形式传,不用定义

拿返回值:同样用execute函数执行查询命令

cur.execute('select  @_p2_0,@_p2_1;')    p2是存储过程名字,0就代表第一个参数的返回值,1就代表第二个参数的返回值,以此类推

cur.fetchone()     还是用fetchone取结果

posted @ 2017-10-30 15:13  九二零  阅读(93)  评论(0编辑  收藏  举报