Python操作MySQL
下载mysql数据库
官网下载
注意:选择Server only安装方式;其他Next,注意管理员用户名密码root/root。
添加环境变量
我的电脑→属性→高级→环境变量→XX的用户变量→Path→编辑→新建
C:\Program Files\MySQL\MySQL Server 5.7\bin
→确定
登录数据库
#windows系统中登录mysql数据库
C:\>mysql -uroot -proot
#创建test数据库
mysql> create database test;
#查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
安装PyMySQL模块
python中没有内置该模块需要手动安装。
1.使用pip安装
C:\>pip install PyMySQL
2.查看pymysql官网文档
官网文档
pymysql遵循python数据编程接口API Reference。
连接数据库
使用pymysql模块的connect()函数。
使用pymysql模块的cursor()函数。
案例
import pymysql
#调用pymysql模块的connect()函数创建connection连接对象
#必备参数有’连接名称‘,’用户名‘,’密码‘,’数据库名‘,注意参数顺序
db = pymysql.connect('localhost','root','root','test')
#调用游标cursor()方法,创建cursor对象
cursor = db.cursor()
#执行sql语句查询数据库版本
cursor.execute('select version()')
data = cursor.fetchone()
print(data) #
cursor.close()
db.close()
#out: ('5.7.31-log',)
将connect传入参数改为关键字参数,传入的时候可以不再注意参数顺序。
上述部分代码修改如下
db = pymysql.connect(host='localhost',user='root',database='test',password='root')
创建表
使用create table 表名
创建表。
案例
import pymysql
db = pymysql.connect('localhost','root','root','test')
cursor = db.cursor()
#如果books表存在就删除它,这样防止创建失败
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;
'''
cursor.execute(sql)
cursor.close()
db.close()
'''
AUTO_INCREMENT表示自增
PRIMARY KEY 主键
decimal(10,2) 保持两位小数点
'''
添加数据
1.插入一条数据。
注意:mysql的占位符为%s,跟SQLite的?不一样。
案例
import pymysql
db = pymysql.connect('localhost','root','root','test',charset='utf8')
cursor = db.cursor()
#定义data元组存放要写入表中的数据
data = ('Python从入门到放弃','计算机类','56.99','2020-10-11')
#Mysql中使用%s作为占位符
sql = "insert into books(name,category,price,publish_time) value (%s,%s,%s,%s)"
cursor.execute(sql,data)
cursor.close()
db.close()
2.插入多条数据;
案例
import pymysql
db = pymysql.connect('localhost','root','root','test',charset='utf8')
cursor = db.cursor()
#定义data列表存放要写入表中的多条数据
data = [
('Python从入门到放弃','计算机类','56.99','2020-10-11'),
('Linux从入门到放弃','计算机类','58.99','2020-10-11'),
('吃饭从入门到放弃','生活类','23.69','2020-10-11'),
('睡觉从入门到放弃','生活类','15.59','2020-10-11')
]
sql = "insert into books(name,category,price,publish_time) value (%s,%s,%s,%s)"
#使用executemany()插入多条数据
cursor.executemany(sql,data)
cursor.close()
db.close()
3.使用try:except:
发生错误时回滚数据;
案例
import pymysql
db = pymysql.connect('localhost','root','root','test',charset='utf8')
cursor = db.cursor()
#定义data列表存放要写入表中的多条数据
data = [
('Python从入门到放弃','计算机类','56.99','2020-10-11'),
('Linux从入门到放弃','计算机类','58.99','2020-10-11'),
('吃饭从入门到放弃','生活类','23.69','2020-10-11'),
('睡觉从入门到放弃','生活类','15.59','2020-10-11')
]
try:
sql = "insert into books(name,category,price,publish_time) value (%s,%s,%s,%s)"
#使用executemany()插入多条数据
cursor.executemany(sql,data)
db.commit()
except:
db.rollback()
cursor.close()
db.close()
修改删除查询
跟操作SQLite一样,点此转送
学习来自:《python从入门到项目实践》明日科技 第十五章
今天的学习是为了以后的工作更加的轻松!