操作流程
- 创建连接
- 获取游标
- 执行sql
- 查询操作(select)
- 非查询操作(insert/update/delete)
- 事务提交(连接对象.commit())
- 事务回滚(连接对象.rollback())
- 关闭游标
- 关闭连接
数据准备
CREATE DATABASE if not EXISTS books DEFAULT charset utf8;
use books;
Drop TABLE if EXISTS `t_book`;
CREATE TABLE `t_book`(
`id` int(11) not null auto_increment,
`title` VARCHAR(20) not NULL COMMENT '图书名称',
`pub_date` date not NULL COMMENT '发布日期',
`read` int(11) not null default '0' comment '阅读量',
`comment` int(11) not null default '0' comment '评论量',
`is_delete` TINYINT(1) not NULL DEFAULT '0' COMMENT '逻辑删除',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='图书表';
INSERT into `t_book` VALUES ('1','射雕英雄传','1980-05-01','12','34','0');
INSERT into `t_book` VALUES ('2','天龙八部','1986-07-24','36','40','0');
INSERT into `t_book` VALUES ('3','笑傲江湖','1995-12-24','20','80','0');
Drop TABLE if EXISTS `t_hero`;
CREATE TABLE `t_hero`(
`id` int(11) not null auto_increment,
`name` VARCHAR(20) not NULL COMMENT '姓名',
`gender` SMALLINT(6) not NULL COMMENT '性别',
`description` VARCHAR(200) default NULL comment '描述',
`is_delete` TINYINT(1) not NULL DEFAULT '0' COMMENT '逻辑删除',
`book_id` int(11) not null comment '所属图书ID',
PRIMARY KEY(`id`),
key `t_hero_book_id`(`book_id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='英雄人物表';
INSERT into `t_hero` VALUES ('1','郭靖','1','降龙十八掌','0','1');
INSERT into `t_hero` VALUES ('2','黄蓉','0','打狗棍法','0','1');
INSERT into `t_hero` VALUES ('3','乔峰','1','降龙十八掌','0','2');
INSERT into `t_hero` VALUES ('4','令狐冲','1','独孤九剑','0','3');
INSERT into `t_hero` VALUES ('5','任盈盈','0','弹琴','0','3');
数据库基本操作
1 连接数据库
获取数据库版本信息
SELECT VERSION() //数据库语句
# 导包
import 数据库增删改查利用pymysql
import pymysql
# 创建连接
conn = pymysql.connect(
host='localhost',
port=3306,
user='anmeiyu',
passwd='anmeiyu',
database='books')
# 获取游标
cursor = conn.cursor()
# 执行sql
cursor.execute('select version()')
result = cursor.fetchone()
print(result)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
2 数据库查询操作
# 导包
import 数据库增删改查利用pymysql
import pymysql
#创建连接
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='root',
database='books'
)
# 获取游标
cursor = conn.cursor()
# 执行sql语句
# 2).查询图书表的数据(包括:图书id、图书名称、阅读量、评论量)
cursor.execute('SELECT id,title,pub_date,`read`,`comment`FROM t_book')
# 3).获取查询结果的总记录数
print("获取的查询结果记录行数为:",cursor.rowcount)
# 4).获取查询结果的第一条数据
# print(cursor.fetchone())
# 5).获取全部的查询结果
result = cursor.fetchall()
print(result)
# for row in result:
# print(row)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
3 数据库插入操作
# 导包
import pymysql
# 创建连接
# 1).连接到数据库(host:localhost user:root password:root database:books)
conn = pymysql.connect(host="localhost",
port=3306,
user="root",
password="root",
database="books",
autocommit=True)
# 获取游标
cursor = conn.cursor()
# 执行sql
# 新增一条图书数据(id:4 title:西游记 pub_date:1986-01-01 )
sql = "insert into t_book(id, title, pub_date) values(4, '西游记', '1986-01-01');"
cursor.execute(sql)
# 3).获取受影响的结果记录数
print("影响的结果记录数为:", cursor.rowcount)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
4 数据库更新操作
# 导包
import pymysql
# 创建连接
# 1).连接到数据库(host:localhost user:root password:root database:books)
conn = pymysql.connect(host="localhost",
port=3306,
user="root",
password="root",
database="books",
autocommit=True)
# 获取游标
cursor = conn.cursor()
# 执行sql
# 更新[西游记]图书名称为(title:东游记)
sql = "update t_book set title = '东游记' where title = '西游记' ;"
cursor.execute(sql)
# 3).获取受影响的结果记录数
print("影响的结果记录数为:", cursor.rowcount)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
5 数据库删除操作
# 导包
import pymysql
# 创建连接
# 1).连接到数据库(host:localhost user:root password:root database:books)
conn = pymysql.connect(host="localhost",
port=3306,
user="root",
password="root",
database="books",
autocommit=True)
# 获取游标
cursor = conn.cursor()
# 执行sql
# 更新[西游记]图书名称为(title:东游记)
sql = "delete from t_book where title = '东游记' ;"
cursor.execute(sql)
# 3).获取受影响的结果记录数
print("影响的结果记录数为:", cursor.rowcount)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
浙公网安备 33010602011771号