pymysql模块(pip安装)
conn = pymysql.connect()
connect方法参数说明:
host : 主机(127.0.0.1)(字符串)
port : 端口号3306
user : 用户名root(字符串)
passwd : 密码(字符串格式)
db : 连接的数据库名(字符串)
charset : 连接的编码(字符串)
connect对象的常用方法:
cursor() : 创建游标
commit() : 提交事务
rollback() : 回滚事务
close() : 关闭数据库连接
cur = connect.cursor()
cursor() : 返回的游标对象,查询语句中的结果保存在元组中.
cursor(pymysql.cursors.DictCursor) : 查询语句中的结果保存在字典中.
execute() : 执行sql语句
fetchone() : 从查询结果中获取一行数据
fetchmany(n) :从查询结果中获取n行数据
fetchall() : 从查询结果中获取所有数据
rowcount() : 返回数据行数或者影响行数
注意:
- 主键和外键对于表格来说是一种约束,并不是必须的,但是有比没有要好.
- 当你进行分组查询时,如果表中没有主键字段,将无法获取除分组查询的字段外其他的其他,当你没有主键约束想要获取其他字段会报完整性错误.
- 外键约束,约束表中的数据不能随意删除,当外键字段所关联的表中存在数据,那么这个外键字段对应的数据将不能删除.
示例
import pymysql
# 1.连接数据库
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
passwd='123456',
db='day16',
charset='utf8'
)
# 2.创建游标
# cur = conn.cursor() # 查询的结果存放在元组中
cur = conn.cursor(pymysql.cursors.DictCursor)
# 3.执行sql语句
# 查询
# sql = '''SELECT emp.`eid`, emp.`ename`, emp.`salary`,
# job.`jname`, job.`description`
# FROM emp, job
# WHERE emp.`job_id`=job.`jid`;'''
#
# cur.execute(sql)
# # print(cur.fetchone()) # 获取查询结果中的一行
# # print(cur.fetchmany(3)) # 获取查询结果中的三行
# r = cur.fetchall() # [{}, {}, {}]
# for i in r:
# print(i)
# 增加数据
# sql = '''insert into test values(40, 50)'''
# cur.execute(sql)
# conn.commit() # 往数据库提交操作
# print('成功插入%s数据' % cur.rowcount)
# 删除数据
# sql = '''delete from test where dep_id=40'''
# cur.execute(sql)
# conn.commit()
# print('成功删除%s条数据' % cur.rowcount)
# 修改数据
# sql = 'update test set num=8 where dep_id=30;'
# cur.execute(sql)
# conn.commit()
# print('成功修改了%s行数据' % cur.rowcount)
# 事物回滚
sql1 = 'update test set num=10 where dep_id=30;'
sql2 = 'update test set num=2 where dep_id=20;'
sql3 = 'create table test(tid int, tname varchar(20))'
# 执行try分支中所有的代码
# 一旦报错则运行except中的代码
# 如果没有任何错误则运行else的代码
try:
cur.execute(sql1)
cur.execute(sql2)
cur.execute(sql3)
except:
# 如果事务中所有的sql语句执行正确则需要手动提交commit
# 任何一条执行报错,提交rollback
# 将所有的数据库操作语言历史记录全部清空
conn.rollback()
print('事物处理失败')
else:
conn.commit()
print('事物处理成功:' % cur.rowcount)
关于Python_mysql数据库(五)的介绍今天就到这里啦~~~~
关注我,带你领略Python的风采~😍😍😍