核心内容
(1)使用到的模块:PyMySQL
安装:
pip3 install pymysql
(2)连接数据库
# 连接数据库,地址:localhost,账号:root,密码:123,数据库:test,编码:UTF-8
db = pymysql.connect('localhost', 'root', '123', 'test', charset='utf8')
(3)创建游标对象
# 创建一个游标对象
cursor = db.cursor()
(4)执行SQL语句
cursor.execute(SQL)
(5)事务提交、回滚
#提交事务
db.commit()
#事务回滚
db.rollback()
(6)获取结果(返回的类型为元组)
- 获取一条数据
cursor.fechone()
- 获取所有的数据
cursor.fechall()
- 查看执行SQL语句后影响到的行数
cursor.rowcount
(7)关闭游标和连接
#关闭游标
cursor.close()
#关闭数据库连接
db.close()
增删改查
1、添加数据
# insertData_mysql.py
import pymysql
# 连接数据库,地址:localhost,账号:root,密码:123,数据库:test,
# 编码:UTF-8
db = pymysql.connect('localhost', 'root', '123', 'test', 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、查询数据
# selectData_mysql.py
import pymysql
# 连接数据库,地址:localhost,账号:root,密码:123,数据库:test,
# 编码UTF-8
db = pymysql.connect('localhost', 'root', '123', 'test', 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()
执行结果
查询到了3条数据
<class 'tuple'>
('2016081111', '张三')
('2016081112', '李四')
('2016081113', '王五')
3、修改数据
# updateData_mysql.py
import pymysql
# 连接数据库,地址:localhost,账号:root,密码:123,数据库:test
db = pymysql.connect('localhost', 'root', '123', 'test', 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、删除数据
# deleteData_mysql.py
import pymysql
# 连接数据库,地址:localhost,账号:root,密码:123,数据库:test
db = pymysql.connect('localhost', 'root', '123', 'test', 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', '张三'),)
删除后: ()