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从入门到项目实践》明日科技 第十五章
posted @ 2020-12-01 14:35  努力吧阿团  阅读(118)  评论(0编辑  收藏  举报