• python操作MySQL


    一、python操作MySQL。

    首先调用pymysql模块

    import pymysql

    连接

    conn = pymysql.connect(
        host = '127.0.0.1',
        port = 3306,
        user = 'root',
        password = '123456',
        database = 'day38',
        charset = 'utf8'  # 编码千万不要加-,写成utf-8会直接报错
    )

    产生一个游标对象

    cursor = conn.cursor(pymysql.cursors.DictCursor)  # 产生一个游标对象
    # DictCursor 以字典的形式反馈查询出来的数据,键是表的字段,值是表的字段对应的信息

    cursor.execute 执行传入sql语句

    sql = 'select * from teacher'
    cursor.execute(sql)  # 执行传入的sql语句
    # print(res)  # res是执行语句返回的数据条数

    cursor.fetchone  # 只获取一条数据

    cursor.fetchall # 获取所有数据,返回结果是一个列表

    cursor.scroll(x,'absolute')  # 控制光标移动,相对起始位置往后移动

    cursor.scroll(x,'relative')   # 相对当前位置,往后移动

    print(cursor.fetchone())  # 只获取一条数据
    
    cursor.scroll(1,'absolute')  # 控制光标移动,absolute相对于起始位置,往后移动几位
    
    # cursor.scroll(2,'relative')  # relative 相对于当前位置,往后移动几位
    
    print(cursor.fetchall())  # 获取所有的数据,返回的结果是一个列表

    二、 sql注入问题

      就是利用注释等具有特殊意义的符号来完成一些骚操作

    mport pymysql
    
    conn = pymysql.connect(
        host = '127.0.0.1',
        port = 3306,
        user = '123456',
        database = 'day38',
        charset = 'utf8' ,
        autocommit = True  # 这个参数配置完成后,增删改操作都不需要手动加conn.commit 了
    
    )
    cursor = conn.cursor(pymysql.cursors.DictCursor)
    
    # sql = 'insert into user(name,password) values("jerry","666")'
    # sql = 'update user set name = "jason" where id = 1'
    # sql = 'delete from user where id = 6'
    # cursor.execute(sql)
    
    
    '''
    增删改操作,都必须加一句
    conn.commit() 操作
    '''
    
    username = input('username>>>:')
    password = input('password>>>:')
    
    sql = 'select * from user where name =%s and password = %s'
    
    res = cursor.execute(sql,(username,password))  # 能够帮你自动过滤特殊字符号,避免sql注入问题
    
    # excute 能够自动识别sql语句中%s 帮你做替换
    if res:
        print(cursor.fetchall())
    else:
        print('用户名或密码错误')
    
    
    '''
    sql注入 就是利用注释等具有特殊意义的符号来完成一些骚操作
    
    后续写sql语句,不要手动拼接关键性的数据
    而是让excute帮你去做拼接
    '''
  • 相关阅读:
    Weblogic 部署注意事项
    Can't load IA 32-bit .dll on a AMD 64-bit platform
    getDeclaredFields()和getFields()
    EJB QI查询
    Git for windows 中文乱码解决方案
    gulp browser-sync自动刷新插件
    input默认提示取消
    devDependencies和dependencies的区别
    npm安装插件提示
    gulp.watch监听文件
  • 原文地址:https://www.cnblogs.com/xiaowangba9494/p/11395563.html
Copyright © 2020-2023  润新知