zoukankan      html  css  js  c++  java
  • 数据库——可视化工具Navicat、pymysql模块、sql注入问题

    数据库——可视化工具Navicat、pymysql模块、sql注入问题

    Navicat是数据库的一个可视化工具,可直接在百度搜索下载安装,它可以通过鼠标“点点点”的方式实现MySQL在cmd命令行中输入的SQL语句,操作易上手

    pymysql模块

    pymysql就是用来在python程序中如何操作mysql,它和mysql自带的那个客户端还有navicat是一样的,本质上就是一个套接字客户端,只不过这个套接字客户端是在python程序中用的。

    如何使用pymysql模块?

    例子说明

    # 下载pymysql模块
    # pip install pymysql
    # 导入pymysql模块
    import pymysql
    
    # 1、建立连接
    conn = pymysql.connect(
        user='root',
        password='123',
        host='127.0.0.1',
        port=3306,
        database='day36',
        charset='utf8',
        # aotucommit=True
    )
    
    # 2、获取游标,游标中的参数cursor=pymysql.cursors.DictCursor是确保返回的结果是字典形式
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    username = input("username>>>:").strip()
    password = input("password>>>:").strip()
    sql = 'select * from user_info where name=%s and password=%s'
    
    # 3、拼接SQL语句
    cursor.execute(sql, (username, password))
    
    res = cursor.fetchall()
    if res:
        print(res)
    else:
        print("用户名或密码错误!")
    # 4、关闭连接,如果设置了aotucommit=True就需要conn.commit()进行确认提交
    cursor.close()
    

    sql注入问题

    什么是sql注入问题?


    sql注入问题就是利用特殊符号,巧妙的绕过真正的SQL校验,这样可以不通过验证就直接进入你的数据库,进行恶意攻击

    如何解决sql注入问题?

    关键性的数据不要自己动手去拼接,直接交由execute帮你拼接就OK了,就像上面的例子一样

    注意
    cursor.scroll( 移动个数,移动模式 ),移动模式有 relative(相对) 和absolute(绝对) 两种。

    相对移动是从当前游标位置开始往后移动,absolute是从最开始的位置向后移动。

    cursor.fetchone( ) 获取一个结果

    cursor.fetchmany ( 数量 ) ,获取指定个数的结果,如果数量大于总的个数,不会报错。

    cursor.fetchall( ) ,获取所有的结果

  • 相关阅读:
    centos7 启动mongodb时报错ERROR: child process failed, exited with error number 1
    liunxcentos7下 跟目录空间不足docker load镜像报错空间不足
    centos7下初始化硬盘挂载目录
    Jenkins打包出错
    CentOS 7 安装 Percona XtraDB Cluster 5.7
    Etcd集群搭建(证书通信)
    centos7下prometheus+grafana监控
    nginx代理
    装Centos7系统
    Dockerfile常用指令使用案例
  • 原文地址:https://www.cnblogs.com/aheng/p/12055985.html
Copyright © 2011-2022 走看看