操作流程
- 創建連接
- 獲取游標
- 執行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號