python进阶(十三、mysql:PyMySQL) [数据库教程]

database

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进阶(十三、mysql:PyMySQL) [数据库教程] 的全部内容, 来源链接: utcz.com/z/535282.html

回到顶部