【本文所用环境及软件:Win10 + Python3 +MySQL + Navicat for MySQL】
首先,通过流程图可以看到在Python中使用PyMySQL连接和操作数据库的大致过程。
如上图所示:
- 创建Connection对象(数据库连接对象)用于打开数据库连接;
- 创建Cursor对象(游标对象)用于执行查询和获取结果;
- 执行SQL语句对数据库进行增删改查等操作并提交事务。此过程如果出现异常,则使用回滚技术使数据库恢复到执行SQL语句之前的状态。
- 依次销毁Cursor对象和Connection对象。
一、基本概念
1、Connection对象
Connection对象即为数据库连接对象,在python中可以使用 pymysql.connect(‘参数’) 方法创建Connection对象。
参数列表:
- host:连接的mysql主机,如果本机是’localhost’
- port:连接的mysql主机的端口,默认是3306
- database:数据库的名称
- user:连接的用户名
- password:连接的密码
- charset:通信采用的编码方式,推荐使用utf8
对象方法:
- close()关闭连接
- commit()提交
- cursor()返回Cursor对象,用于执行sql语句并获得结果
2、Cursor对象
Cursor对象即为游标对象,用于执行sql语句,使用频度最高的语句为select、insert、update、delete。在python中可以使用conn.cursor( ) 创建,conn为Connection对象。
对象方法:
- execute():执行数据库查询或命令,将结果从数据库获取到客户端
- fetchone():获取结果集的下一行
- fetchmany():获取结果集的下几行
- fetchall():获取结果集中剩下的所有行
- close():关闭当前游标对象
对象属性:
- rowcount:只读属性,表示最近一次execute( )执行后返回数据的行数或受影响的行数
3、事务
事务是数据库理论中一个比较重要的概念,指访问和更新数据库的一个程序执行单元,具有ACID特性:
- 原子性(Atomic):事务中的各项操作要么全都做,要么全都不做。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
- 一致性(Consistent):事务必须使数据库从一个一致性状态变到另一个一致性状态,即数据库的完整性不能被破坏。
- 隔离性(Isolated):数据库允许多个并发事务同时对其数据进行读写和修改的能力,一个事务的执行不能被其他事务干扰。隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
- 持久性(Durable):事务一旦提交,它对数据库的改变就是永久性的,可以通过日志和同步备份在故障发生后重建数据。
二、操作实例
首先要在Navicat中创建数据库 test, 如下图所示。(新建连接testDB->新建数据库test)
1、创建数据库表
在这里我用于连接testDB而使用的用户名为 “root” ,密码为 “123456”。你需要自己设定或者使用你的root用户名及其密码。注意修改代码,使之保持与你的用户名和密码一致。后面的例子皆如此。
# -*-coding:utf-8-*-
import pymysql
# 打开数据库连接(此处修改用户名和密码)
conn = pymysql.connect('localhost', 'root', '123456', 'test'