安装第三方模块pymysql
pip install pymysql
或者
通过PyCharm后台操作
连接mysql
# 语法示例
import pymysql
db = pymysql.connect(host='localhost',user='root',password="123456",database='school',port=3306,charset="utf8")
数据操作的基本语法
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
# 撰写SQL语句
sql = "select * from student"
# 执行SQL语句
cursor.execute(sql)
# 获取数据
results = cursor.fetchall()
# 打印结果
print(results)
# 关闭数据库连接
db.close()
游标的概念
游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果。游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
尽管游标能遍历结果中的所有行,但一次只指向一行。
游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。
- 执行SQL代码
- 遍历获取查询结果
增
增加表
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
# 使用预处理语句创建表
sql = "create table ceshi (id int primary key, name char(8), age int)"
# 执行SQL语句
cursor.execute(sql)
# 关闭数据库连接
db.close()
增加数据
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL插入语句
sql = "insert into ceshi values(1, 'Toiny', 25)"
try:cursor.execute(sql) # 执行SQL语句db.commit() # 提交到数据库执行
except:db.rollback() # 如果发生错误则回滚
# 关闭数据库连接
db.close()
知识点:
- 支持事务的储存引擎,MySQL8.0默认是innodb。
- commit() 提交事务。
- 记录的增删改操作需要提交事务,其他不需要。
- rollbak() 回退事务,当事务执行到一半报错时整个事务操作都会回退。
删
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL删除语句
sql = "delete from ceshi where age >= 20"
try:cursor.execute(sql) # 执行SQL语句db.commit() # 提交到数据库执行
except:db.rollback() # 如果发生错误则回滚
# 关闭数据库连接
db.close()
改
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL更新语句
sql = "update ceshi set age = 25 where age = 22"
sql1 = "select * from ceshi"
try:cursor.execute(sql) # 执行SQL语句cursor.execute(sql1) # 执行SQL语句db.commit() # 提交到数据库执行
except:db.rollback() # 如果发生错误则回滚
# 打印数据
print(cursor.fetchall())
# 关闭数据库连接
db.close()
查
import pymysql# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="123456", database="school")
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
# SQL查询语句
sql = "select * from student"
try:cursor.execute(sql) # 执行SQL语句# results = cursor.fetchone() # 逐条获取数据results1 = cursor.fetchall() # 获取全部数据for row in results1:name = row[3]sex = row[1]print("name=%s,sex=%s" % (name, sex))
except:print("Error: unable to fetch data")
# 关闭数据库连接
db.close()
知识点:
- fetchone():该方法获取下一个查询结果集。结果集是一个对象。
- fetchall():接受全部的返回结果行。
- rowcount:这是一个只读属性,并返回执行execute()方法后影响的行数。
来自: 学习MySQL(六):Python的连接与操作