• python进阶(十四、mysql:PyMySQL)


    3.mysql数据库

    3.15 使用python操作mysql数据库(PyMySQL)
    3.15.1. PyMySQL的安装
    1)使用命令安装:pip install pymysql
    2)使用Pycharm安装


    3.15.2. python连接数据库
    1)参看参数



    2)创建连接和获取数据

    3)异常处理
    mysql语句错误时,会将错误信息传给python,并报错

    可以使用异常处理,处理mysql语句错误

    4)关闭游标和连接
    使用完数据库,要关闭游标和连接,释放资源

    3.15.3. 数据的增删改
    1)数据添加
    (1)书写执行语句时,注意sql语句内部的字符串标识要与外边的标识区分开
    (2)修改数据的数据要执行commit()才能真正写入数据库

    2)数据修改

    3)数据删除

    3.15.4. 数据查询
    1)fetch
    fetchone():获取一条数据
    fetchmany(n):获取n条数据,可用于分页显示
    fetchall():获取全部数据

    2)fetch查询的返回结果默认是元组,可以在元组中直接取值

    3)指定fetch输出类型是字典:
    cursor=pymysql.cursors.DictCursor

    4)rowcount:是一个只读属性,返回执行execute()方法后影响的行数。

    可以使用rowcount循环读取fetchone数据

    3.15.5. 数据回滚:rollback
    在执行多行语句时,如果其中某行语句出现错误,将前面已经执行成功的语句也撤销,这个过程称为数据回滚。数据回滚可以保证数据的安全和完整性。

    注意:使用数据回滚时,commit()方法一定要写在try语句的最后。
    如果提前使用commit()方法将数据写入数据库,然后再报错,rollback无法删除已经写入数据库中的数据。
    rollback只能清除内存中的修改,无法修改数据库中的数据。

    3.15.6. 表操作
    表操作(新建表、修改表、删除表)时,不执行commit()也会直接写到数据库。

    3.15.7. 将mysql语句写入字符串,在执行

    使用三引号(”””)定义字符串可以换行,方便书写

    3.15.8. sql注入(重点)
    1)在sql语句中,遇到“;--”后面的语句就被忽略了

    2)使用mysql保存用户名和密码,登录验证时,会使验证失效
    (1)数据库中创建用户信息表,并添加用户名和密码

    (2)在python中,判断用户输入的用户名和密码,是否与数据库中的数据相同

    (3)异常输入时,也可以登陆成功
    只知道用户名,不知道密码,可以登陆成功

    因为mysql执行到“;-- ”后,不在执行后面的语句了。
    注意: “;-- ”后面有一个空格
    输入时加入or 1=1,用户名和密码都错误依然可以登录成功

    3)解决方法
    定义字符串时,只需要用占位符(%s)占位;然后使用execute()方法实现拼接mysql语句的拼接,将需要替换的数据放入元组即可。execute()还会根据数据类型,自动为字符串数据添加引号。
    注意:使用占位符占位时,无论何种数据类型只能使用“%s”,不能使用%d、%f等,execute()方法能够自动识别。

    3.15.9. PyMySQL使用步骤
    1)连接数据库:connect(host, user, password, database, port)
    2)获取游标 conn.cursor()
    3)执行sql语句(增删改查,sql注入)
    4)确认提交:commit(),增加、修改和删除数据时,需要确认提交
    5)关闭游标
    6)关闭数据库

  • 相关阅读:
    28SQL 撤销索引、表以及数据库
    常见漏洞利用讲解
    6JavaScript 输出
    29_SQL ALTER TABLE 语句
    【首发】入门必看,性能测试指标详解,小白从零入门性能测试
    使用阿里云oss,在小程序端部分图片有时候显示,有时候不显示
    (0 , _auth.default) is not a function的问题
    uniapp开发小程序onReachBottom只触发一次
    Httprunner环境搭建
    4、vite创建vue项目
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14102822.html
Copyright © 2020-2023  润新知