• day40 pymysql 子查询


    一、子查询

    子查询是将一个查询语句嵌套在另一个查询语句中。

    内层查询语句的查询结果,可以为外层查询语句提供查询条件。

    子查询中可以包含:in ,not in ,any,all,exists 和 not exists等关键字

    还可以包含比较运算符:=、!=,>,<

    二、navicat 软件的应用

    三、pymysql模块

    improt pymysql

    conn=pymysql.connect(host='localhost',user='root',password='1',database='db1','charset='utf8')

    coursor=conn.cursor()

    sql='select * from user where name="%s" and password="%s"'%(user,pwd)

    print(sql)

    res=cursor.execute(sql)#执行sql语句,返回sql查询成功的记录数目

    print(res)

    coursor.close()

    conn.close()

     

    if res:

      print('登录成功')

    else:

      print('登录失败)

    二、execute()之sql注入

    符号--会注释掉它之后的sql,正确的语法,--后至少有一个任意字符

    根本原理,就根据程序的字符串拼接name='%s',我们输入一个xx'--hh

    就是用xx加‘在程序中模拟拼接一个判断条件name='xx'--aa'

    sql注入:用户存在,绕过密码

    egon'--任意字符

    sql注入:用户不存在,绕过用户与密码

    xx' or '1=1'--任意字符

    解决方法,

    原来是我们对sql进行字符串进行拼接

    现在execute帮我们做了字符串拼接,我们不用在sql语句中为%s加引号

    res=cursor.execute(sql,[user,pwd])

    scroll绝对移动 absolute
    scroll相对移动 relative

     cursor.fetchone()#查看第一条记录

    cursor.fetchmany(2)#从第一条开始查两条

    cursor.fetchall()查看剩下的所有记录

    增:

     conn.cursor()

    sql='insert into user(name,pwd) value('root','123')'

    res=cursor.execute(sql)

    conn.commit():#只有提交后才能发现表中插入记录成功

    cursor.close()

    conn.close()

  • 相关阅读:
    Windows phone 应用开发[9]单元测试
    Git Tool Part 2
    Windows phone 应用开发[6]Managed Extensibility Framework应用程序扩展
    也谈存储过程分页
    上传图像到sqlserver
    这两段代码是不同的
    TextBox中的TextChanged和KeyDown事件的小区别
    发现发现返回一条记录的datareader的新用法
    最近好多疑问啊!高手给点意见吧!
    csdn论坛去不了,只有在这里问了
  • 原文地址:https://www.cnblogs.com/lg04551/p/9024681.html
Copyright © 2020-2023  润新知