活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
学习日记(4)
目录
MySQL是一款开源的数据库软件,由于其免费特性得到了全世界用户的喜爱,因此MySQL成为当前使用人数最多的数据库之一。
pymysql是一个Python编写的MySQL驱动程序,让我们能用Python语言操作MySQL数据库。
一、下载和安装MySQL
1、下载MySQL
可以再浏览器输入地址“https://dev.mysql.com/downloads/windows/installer/8.0.html”,并按Enter键,进入MySQL8.0的下载页面,选择离线安装包下载。
如果有MySQL账户,可以单击“Login”登录账户后下载,没有账户的,可以单击下方“No thanks, just start my download.”超链接,跳过注册步骤,直接下载。
2、安装MySQL
下载完成后,开始安装MySQL。双击安装文件,在所示界面选中I accept the license terms 复选框,点击NEXT,进入选择设置类型界面,这里有五种类型,MySQL会默认选择Developer Default类型,这里选择纯净的Server only类型,然后一直默认选择安装。
3、设置环境变量
右击“此电脑”v→选择“属性”→选择“高级系统设置”→单击“环境变量”→选择“Path”→点击“编辑”后输入安装的路径并保存。(默认安装路径是:C:\Program Files\MySQL\MySQL Server 8.0\bin)
3、启动MySQL
在“命令提示符”窗口输入命令 net start mysql80 ,启动MySQL 8.0.启动后使用账户和密码进入MySQL。输入命令 mysql-u root-p ,会提示“Enter password:”,输入密码root,即可进入MySQL。
二、安装PyMySQL
win+r打开后输入cmd并Enter一下
输入下面指令后回车
pip install PyMySQL
即可安装成功
再次重复pip命令,出现下图情况即安装成功
三、MySQL的使用
1、连接数据库
#由于PyMySQL遵循Python Database API 2.0 规范,因此操作MySQL数据库的方式与SQLite相似,可以通过类比的方式来学习。
首先import MySQL库
import pymysql
先前已经建立MySQL数据库mrsoft,并且安装数据库时设置了数据库的账户名和密码均为root,下面就通过这些信息,使用connect()方法连接MySQL数据库。
# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4:数据库名称 db = pymysql.connect(host="localhost", user="root", password="root", database="mrsoft") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取单条数据. data = cursor.fetchone() print ("Database version : %s " % data) # 关闭数据库连接 db.close()
2、创建数据表
使用execute()方法为数据库创建表books
books表包含id(主键)、name(图书名称)、category(图书分类)、price(图书价格)和publish_time(出版时间)5个字段
import pymysql # 打开数据库连接 db = pymysql.connect(host="localhost", user="root", password="root", database="mrsoft") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS books") # 使用预处理语句创建表 sql = """ CREATE TABLE books ( id int(8) NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL, category varchar(50) NOT NULL, price decimal(10,2) DEFAULT NULL, publish_time date DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; """ # 执行SQL语句 cursor.execute(sql) # 关闭数据库连接 db.close()
3、操作MySQL数据表
MySQL数据表主要操作包括数据的新增、删除、修改和查找。
例如,可以用excute()方法增加一条记录,也可以用executemany()方法批量增加多条记录。executemany()方法格式如下:
executemany(operation,seq_of_params)
详细操作如下:
# 增 sql = """insert into students(name) values("痔疮")""" cursor.execute(sql) # 打印受影响的行数 # 删 sql = """delete from students where name="痔疮""""; cursor.execute(sql) # 改 sql = """update students set name="小王" where id=6;""" cursor.execute(sql) # 提交之前的操作,如果之前已经执行过多次的execute,那么就都进行提交 conn.commit() # conn.rollback() # 对之前的操作进行回退处理
实例:
import pymysql # host:连接的mysql主机,如果本机是a # port:连接的mysql主机的端口,默认是1234 # database:数据库的名称 # user:连接的用户名 # password:连接的密码 # charset:通信采用的编码方式,推荐使用utf8 conn = pymysql.connect(host="a", port=1234, user="root", password="mysql", database="python41", charset="utf8" ) 获取游标,目的就是要执行sql语句 cursor = conn.cursor() # 增加操作 sql = "insert into classes(name) values('嘿嘿)" # 修改操作 # sql = "update classes set name = '漆漆' where id = 2" # 删除操作 # sql = "delete from classes where id=2" try: # 4. 执行sql语句 cursor.execute(sql) # 增删改都必须提交数据 conn.commit() except: # 如果报错就对修改的数据进行撤销 conn.rollback() # 5.关闭游标 cursor.close() # 6.关闭连接 conn.close()
四、注意事项
使用connect()方法连接数据库时,额外设置字符集charset=utf-8,可以防止插入中文时出错。
使用insert语句插入数据时,使用%作为占位符,可以防止SQL注入。