pymysql_python操作MySQL数据库1 数据的介绍
概念:数据库是⼀个⽤来存放数据的仓库,是按照⼀定的数据结构来存储、组织和管理数据。
分类⽅法:
关系型数据库:Mysql(开源),Oracle(收费,银⾏使⽤),SQL Server(收费),SQLite等
⾮关系型数据库:redis,mongodb等
Python操作Mysql数据库的⼏种⽅式
MysqlDB
是早期python2.x时代所使⽤⼯具,但是由于现在已经进⼊python3.x时代,已经不再使⽤这个⼯具了。
mysqlclient
是mysqldb衍⽣版本,完全兼容mysqldb。
是django框架的orm映射⼯具
pymysql
是纯python实现的驱动,也兼容mysqldb
也是我们重点学习的⼯具
sqlalchemy
是即⽀持原⽣SQL,也⽀持ORM的⼯具,类似于java的hibernate
2 数据库的基本操作
1 pymysql的安装
在线安装:打开cmd输⼊命令pip install pymysql
2 pymysql操作数据库的流程
流程图:
流程的⽂字描述:
1 导包
2 建⽴连接
3 获取游标
4 执⾏SQL语句
5 关闭游标
6 关闭连接
3 案例数据准备
先启动数据库,我们使⽤phpstudy来启动
如下图所⽰,如果Mysql右边的绿点是绿⾊的,那么就证明mysql启动了
连接到数据库
通过navicat⼯具来连接数据库
打开navicat,然后新建连接
确认测试连接成功后,点击确定(不是测试连接成功的确定,⽽是建⽴连接的确定)连接到数据库
然后打开数据库,点击顶部查询
然后点击下⾯的新建查询
检查有没有运⾏成功的⽅式:
先关闭当前的数据库连接,然后重新连接到数据库
下⾯是sql语句:
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');
4 数据库基本操作
连接数据库⽰例代码
# 1 导包
# 注意如果导⼊的pymysql是黄⾊的,那么有可能你的项⽬名称和python⽂件名称是pymysql导致导包导⼊错误# 如果是⼀个波浪线,有可能没有选择运⾏环境和没有安装pymysql
import pymysql
# 2 建⽴连接
conn = t(host='localhost', user='root', password='root', port=3306)
# 3 获取游标
cursor = conn.cursor()
# 4 执⾏SQL语句:执⾏查询数据库版本的SQL语句
# 注意SQL语句当中的符号都必须是英⽂的符号
# 打印执⾏的结果
# 获取执⾏结果
result = cursor.fetchone()
# 打印查询结果
print("result=", result)
# 5 关闭游标
cursor.close()
# 6 关闭连接
conn.close()
数据库查询操作代码
# 1 导包
import pymysql
# 2 建⽴连接:连接到数据库(host:localhost username:root password:root database:books)
conn = t(host='localhost', user='root', password='root', database='books')
# 3 获取游标
curcor = conn.cursor()
# 4 执⾏SQL语句:
# 查询图书表的数据(包括:图书id、图书名称、阅读量、评论量)
# 获取查询结果的总记录数:wcount的意思是获取执⾏SQL语句之后影响的⾏数
print("总记录数:", wcount)
# 获取查询结果的第⼀条数据
print("第⼀条数据:", curcor.fetchone())
# 获取全部的查询结果
# 注意:如果在上⾯先运⾏的cursor.fetchone()那么,数据的指针会下移,导致cursor.fetchall()获取的数据
# 会缺少⼀⾏。要解决这个问题,需要重置指针。
print("执⾏了fetchone后的全部的查询结果:", curcor.fetchall())
# 重置指针的⽅法:重新执⾏查询语句
# 重新之后再打印执⾏结果
book_list = curcor.fetchall()
print("重置指针之后的全部结果:", book_list)
# 遍历book_list,打印所有的书
for book in book_list:
print("书:", book[1])
# 5 关闭游标
curcor.close()
# 6 关闭连接
conn.close()
插⼊语句
# 1 导包
import pymysql
# 2 建⽴连接
conn = t(host='localhost',
user='root',
password='root',
database='books',
autocommit=True)
# 3 获取游标
cursor = conn.cursor()
# 4 执⾏SQL语句:执⾏插⼊⼀本的SQL语句
# 查看执⾏结果
print("插⼊结果为:", cursor.fetchall())
# 5 关闭游标
cursor.close()
# 6 关闭连接
conn.close()
修改语句
# 导包
之前下过mysql现在重新下载mysqlimport pymysql
# 建⽴连接
conn = t(host='localhost', user='root', password='root', database='books', autocommit=True)
# 获取游标
cursor = conn.cursor()
# 执⾏update语句:对周易这本书的阅读量⾃增1操作
update_sql = "update t_book set `read`=`read`+1 where title='周易';"
# 查询周易这本书的阅读量有没有⾃增1
print("周易这本书:", cursor.fetchall())
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
删除语句
# 导包
import pymysql
# 建⽴连接
conn = t(host='localhost', user='root', password='root', database='books',autocommit=True)
# 获取游标
cursor = conn.cursor()
# 删除前的结果:
# 查看执⾏结果
print("删除前的结果为:", cursor.fetchall())
# 执⾏删除语句delete from t_book where id=4;
# 删除后执⾏结果
print("删除后的结果为:", cursor.fetchall())
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
5 数据库事务的概念
概念:事务是⼀组操作序列,这组操作序列,要么全部都成功,要么全部都失败。
举个例⼦:银⾏转账的过程当中,所有的操作都要认为是⼀个事务,如果中间有⼀个操作失败,那么之前成功操作都要回滚,(按照⽇志记录回滚),保证操作没有发⽣,还原原始的场景。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论