python进阶(十mysql:PyMySQL)

Posted 叮当2000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)关闭数据库

以上是关于python进阶(十mysql:PyMySQL)的主要内容,如果未能解决你的问题,请参考以下文章

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

Python全栈开发MySQL进阶

python第六十五天--python操作mysql

5第八周 - 网络编程进阶 - Python 连接 Mysql

数据库进阶

python进阶-mock接口