• 视图函数中进行sql查询,防止sql注入


     

    视图函数中进行sql查询

    import pymysql
    # 创建连接  use_unicode=true指定字符的编码、解码格式,进行自动编码解码,mysql数据库的编码格式为gbk,而项目数据库为utf-8
    # 使用与django和falsk框架
    db=pymysql.connect(host='127.0.0.1',user='root',password='',port=3306,database='t1',charset='utf8',use_unicode=True)
    
    def func():
        sql='select * from class'
        try:
            # 获得course对象
            corsor=db.cursor()
            # 执行sql语句
            corsor.execute(sql)
            # 获得查询结果
            results=corsor.fetchall()
            l=list(results)
            print(l)
            return len(l)
    
        except Exception as e:
            return str(e)
    
    if __name__ == '__main__':
        print(func())
    

      

    防止sql注入

    from pymysql import *
    def main():
        
        find_name = input("请输入物品名称:")
        
        # 创建Connection连接
        conn = connect(host='localhost',port=3306,user='root',password='',database='t1',charset='utf8')
        # 获得Cursor对象
        cs1 = conn.cursor() 
         
        # 不使用防护措施 输入  " or 1=1 or " 那么就返回数据库数据,造成数据库泄露
        # count=cs1.execute("select * from course where cname='%s'" % find_name)
        
        # 构造查询参数 -- 方式sql注入   execute模块会自动为要查询的匹配引号和双引号
        params=[find_name]
        count=cs1.execute('select * from course where cname=%s',params)
        # 注意:
        # 如果要是有多个参数,需要进行参数化
        # 那么params = [数值1, 数值2....],此时sql语句中有多个%s即可
    
        print(count)
        result=cs1.fetchall()
        print(result)
    
        # 关闭corsor对象
        cs1.close()
        # 关闭connection对象
        conn.close()
    
    if __name__ == '__main__':
        main()
    

      输入要查的字段会显示响应数据内容。

  • 相关阅读:
    Request和Session的生命周期
    了解EBP指针
    esp跟ebp跟踪记录
    深入浅出Node.js (6)
    洛谷 P2404 自然数的拆分问题
    洛谷 P1852 奇怪的字符串
    洛谷 P1433 吃奶酪
    洛谷 P1881 绳子对折
    洛谷 P1162 填涂颜色
    P1145 约瑟夫
  • 原文地址:https://www.cnblogs.com/djfboai/p/11028082.html
Copyright © 2020-2023  润新知