核心内容
(1)使用到的模块:PyMySQL
安装:
pip3 install pymysql
(2)连接数据库
# 连接数据库,地址:localhost,账号:root,密码:root,数据库:school,
# 编码:UTF-8
db = pymysql.connect('localhost', 'root', 'root', 'school', charset='utf8')
(3)创建游标对象
# 创建一个游标对象
cursor = db.cursor()
(4)执行 SQL语句
cursor.execute(SQL)
(5)事务提交、回滚
#提交事务
db.commit()
#事务回滚
db.rollback()
(6)获取结果(返回的类型为 元组)
获取一条数据
cursor.fetchone()
获取所有数据
cursor.fetchall()
查看执行SQL语句后影响 到的行数
cursor.rowcount
(7)关闭游标和连接
#关闭游标
cursor.close()
#关闭数据库连接
db.close()
增删改查
1.添加数据
import pymysql
# 连接数据库,地址:localhost,账号:root,密码:root,数据库:school,
# 编码:UTF-8
db = pymysql.connect('localhost', 'root', 'root', 'school', charset='utf8')
# 创建一个游标对象
cursor = db.cursor()
# SQL语句
SQL = ''' INSERT INTO STUDENT VALUES('2016081111','张三','男'),('2016081112','李四','女'),('2016081113','王五','男');
'''
try: # 插入数据
cursor.execute(SQL)
# 提交到数据库
db.commit()
print('插入成功')
except:
# 插入失败
db.rollback()
print('插入失败')
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()
2.查询数据
import pymysql
# 连接数据库,地址:localhost,账号:root,密码:root,数据库:school,
# 编码UTF-8
db = pymysql.connect('localhost', 'root', 'root', 'school', charset='utf8')
# 创建一个游标对象
cursor = db.cursor()
# SQL语句
SQL = '''
SELECT * FROM STUDENT;
'''
try:
# 查询所有的数据
cursor.execute(SQL)
# 查询到的条数
print('查询到了%s条数据' % (cursor.rowcount))
# 获取一条数据
one = cursor.fetchone()
print(type(one))
print(one)
# 获取所有数据
for item in cursor.fetchall():
print(item)
except:
# 插入失败
print('查询失败')
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()
执行结果
查询到了4条数据
<class 'tuple'>
('30', 'prince', '男')
('2016081111', '张三', '男')
('2016081112', '李四', '女')
('2016081113', '王五', '男')
3.更新数据
import pymysql
# 连接数据库,地址:localhost,账号:root,密码:root,数据库:school
db = pymysql.connect('localhost', 'root', 'root', 'school', charset='utf8')
# 创建一个游标对象
cursor = db.cursor()
SNAME = '李华'
# 更新数据SQL语句
UPDATE_SQL = '''
UPDATE STUDENT SET SNAME='%s' WHERE SNO='2016081111';
''' % (SNAME)
# 查询数据SQL语句
SELECT_SQL = '''
SELECT * FROM STUDENT WHERE SNO='%s'
''' % ('2016081111')
try:
# 更新数据前
cursor.execute(SELECT_SQL)
print('更新前:', cursor.fetchall())
# 更新数据
cursor.execute(UPDATE_SQL)
# 提交到数据库
db.commit()
# 更新数据后
cursor.execute(SELECT_SQL)
print('更新后:', cursor.fetchall())
except:
# 更新失败,回滚
db.rollback()
print('更新失败')
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()
执行结果:
更新前: (('2016081111', '张三'),)
更新后: (('2016081111', '李华'),)
4.删除数据
import pymysql
#连接数据库,地址:localhost,账号:root,密码:root,数据库名:school
db=pymysql.connect('localhost','root','root','school',charset='utf8')
#创建一个游标对象
cursor=db.cursor()
SNO='2016081111'
#删除数据SQL语句
DELETE_SQL='''
delete from student where Sno='%s';
''' % (SNO)
#查询数据SQL语句
SELECT_SQL='''
select * from student where sno='%s'
''' % (SNO)
try:
#数据删除前
cursor.execute(SELECT_SQL)
print('删除前:',cursor.fetchall())
#删除数据
cursor.execute(DELETE_SQL)
#提交到数据库
db.commit()
#数据删除后
cursor.execute(SELECT_SQL)
print('删除后:',cursor.fetchall())
except:
#删除失败,回滚
db.rollback()
print('删除失败')
#关闭游标
cursor.close()
#关闭数据库连接
db.close()
执行结果
删除前: (('2016081111', '张三'),)
删除后: ()