• mysql数据库连接模块 pymysql && sql注入


    1.pymysql基本用法

    创建连接conn conn创建游标对象cursor cursor执行(execute)sql语句 游标对象cursor 获取结果(fetchone、fetchall)



    import pymysql
    conn = pymysql.connect(
    user = 'root',
    password = '123',
    host = '127.0.0.1',
    port = 3306,
    charset = 'utf8',
    database = 'day36_1'
    )
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 产生一个游标对象 并以字典形式返回
    # cursor=pymysql.cursors.DictCursor 将查询出来的结果制作成字典的形式返回
    sql = "select * from userinfo"
    res = cursor.execute(sql) # 执行sql语句
    # print(res) # execute返回的时候当前sql所影响的行数 返回数字2
    # ret = cursor.fetchone() # 只获取查询结果中的一条数据 返回一条数据 光标依次向下读取
    # # ret = cursor.fetchall() # 获取查询结果的所有数据
    # # ret = cursor.fetchmany(2) # 指定获取几条数据 如果数字超了也不会报错
    # # print(ret)
    #
    # print(cursor.fetchone())
    # print(cursor.fetchone())
    # # 相对移动
    # # cursor.scroll(2,'relative') # 基于指针所在的位置 往后偏移
    # # 绝对移动
    # cursor.scroll(1,'absolute') # 基于起始位置 往后偏移





    2.数据输出格式
    cursor = conn.cursor()         # 默认元组套元组的格式: ((1, 'tank2b', '123'), (2, 'egonnb', '123'))

    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    # 设置为列表套字典的格式: [{'id': 1, 'username': 'tank2b', 'password': '123'}, {'id': 2, 'username': 'egonnb', 'password': '123'}]


    3.SQL注入
    sql注入问题
        利用特殊符号和注释语法 巧妙的绕过真正的sql校验
    
    关键性的数据 不要自己手动去拼接 而是交由execute帮你去做拼接

    常见sql注入

    SELECT USER from database WHERE username='a' or 1=1     绕过验证









  • 相关阅读:
    前端三剑客之css 后续
    前端三剑客之css
    优酷项目遇到的知识点回顾
    MySQL 里 视图,触发器,事物,存储过程,内置函数,流程控制,索引
    mysql的用户管理
    数据库管理工具 navicat 相关的练习
    MySQL 单表查询,多表查询
    MySQL 外键 表与表的关系 多对一,多对多,一对一,表的修改 与 复制
    ORM基础
    Django路由系统
  • 原文地址:https://www.cnblogs.com/bigbox/p/12055523.html
Copyright © 2020-2023  润新知