【python】进阶--->MySQL数据库(五)

python与mysql数据库

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() : 返回数据行数或者影响行数

注意:

  1. 主键和外键对于表格来说是一种约束,并不是必须的,但是有比没有要好.
  2. 当你进行分组查询时,如果表中没有主键字段,将无法获取除分组查询的字段外其他的其他,当你没有主键约束想要获取其他字段会报完整性错误.
  3. 外键约束,约束表中的数据不能随意删除,当外键字段所关联的表中存在数据,那么这个外键字段对应的数据将不能删除.

示例

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的风采~😍😍😍

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌上*^_^*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值