zoukankan      html  css  js  c++  java
  • 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     绕过验证









  • 相关阅读:
    LR-Controller 如何自定义显示虚拟用户状态
    Jmeter Md5加密操作之-------BeanShell PreProcessor
    [编译器]dev c++单步调试
    [数据结构]二叉树创建与遍历
    [数分笔记]关于有限覆盖定理
    [数分笔记]用Dedekind切割定理证明确界定理
    [数分笔记]Dedekind切割定理的证明
    [思考的乐趣] 有趣的莫比乌斯带
    [转自Matrix67] 趣题:顶点数为多少的图有可能和自己互补
    [数分笔记]问题1.1 T1
  • 原文地址:https://www.cnblogs.com/bigbox/p/12055523.html
Copyright © 2011-2022 走看看