python操作链接数据库和Mysql中的事务在python的处理

python操作数据库

  • pymysql模块:

    pip install pymysql

  • 作用:可以实现使用python程序链接mysql数据库,且可以直接在python中执行sql语句

添加操作
python 复制代码
import pymysql
#1.创建链接对象c
conn = pymysql.Connect(
    host='127.0.0.1',#数据库服务器主机地址
    port=3306, #mysql的端口号
    user='root', #数据库的用户名
    password='xxxxxx', #数据库密码
    db='dbtest1',#数据仓库的名称
    charset='utf8') # 不要写utf-8
# 创建一个游标对象
cusor= conn.cursor()
print(conn)
# 2.增加记录操作
sql = 'insert into temp (name,sex,age,dep_id) values ("%s","%s",%d,%d)'%('haha','female',20,200)
cusor.execute(sql)
conn.commit() #对数据进行整改后,记得进行事物的提交
#关闭打开的资源对象
cusor.close()
conn.close()
删除操作
复制代码
# 3.删除记录
sqls = 'delete from temp where name = "%s"'%'haha'
print(sqls)
# cusor.execute(sqls)
# conn.commit()
修改操作
python 复制代码
new_age = input('enter a new age:')
new_age = int(new_age)
sql = 'update temp set age = %d where id = 3'%new_age
print(sql)
cusor.execute(sql)
conn.commit()
查询操作
查询全部
python 复制代码
sql = 'select * from temp where age > 30'
cusor.execute(sql)  # 负责执行sql语句
# fetchall 返回的是元组套用元组
all_data = cusor.fetchall() #获取查询到所有的数据,如果没有查询到数据返回一个空元组
print(all_data)
print(len(all_data))
查询第一条
python 复制代码
sql = 'show tables' #sql语句
cusor.execute(sql)  #执行sql语句
one = cusor.fetchone()  #获取一条数据
print('one:',one)
print('one:',one[0])
查询多条
python 复制代码
many = cusor.fetchmany(3) #获取指定条数的数据,不写默认为1
print('many:',many)
关闭连接对象
python 复制代码
# # # 关闭打开的资源对象
cursor.close()
conn.close()

关于mysql中的事务

什么是事物?

  • Mysql的事物主要是指一组处理操作量大,复杂度高的数据的操作。
  • 事务其实就是MySQL中处理数据的一种方式,主要用在数据完整性高,数据之间依赖性大的情况下的一种数据处理方式.
  • 举个例子
  • ,在小张点击了确认转账的按钮时,系统突然崩溃了.会出现这样几中不正确的情况:
    • 1.小张的钱打到小李的账户上,但是自己的账户上的钱没被扣.
    • 2.小张的钱打没到小李的账户上了,但是自己账户上的钱被扣.
    • 这样的业务场景就需要MySQL事务保持,即使机器出故障的情况下,数据仍然是正确的.
python 复制代码
import pymysql
#1.创建链接对象
conn = pymysql.Connect(
    host='127.0.0.1',#数据库服务器主机地址
    port=3306, #mysql的端口号
    user='root', #数据库的用户名
    password='xxxxx', #数据库密码
    db='dbtest1',#数据仓库的名称
    charset='utf8')
#创建一个游标对象
cusor = conn.cursor()

#小张向小李的银行卡打200块钱
sql1 = 'update bankTab set monry -= 200 where name = "小张"'
sql2 = 'update bankTab set monry += 200 where name = "小李"'

try:
    cusor.execute(sql1) #成功执行
    cusor.execute(sql2) #发成异常
    # 不提交 不会对数据库有变化
    conn.commit() #说明转账成功,数据就写死到数据库,没有办法在回撤
except Exception as e:
    print(e)
    conn.rollback() #事物的回滚:将try中执行成功的sql效果撤回
    
cusor.close()
conn.close()
事务的特点:
  • 事物的特点

    • 原子性
      • 一个事务必须被作为一个不可分割的最小工作单元,每个事务中的所有操作必须要么成功,或者要么失败,不能一些成功一些失败。
    • 一致性
      • 一致性就像上面举的一个例子一样,当发生异常情况下,数据仍然是正确的.就是说当一个事务执行失败了,数据之间是不会受异常的情况而影响,永远保持着他的正确性.
    • 隔离性
      • 当一个事务还未提交,每个事务之间是相互隔离的,互补受到影响.
    • 持久性
      • 当一个事务进行提交之后,发生的变化就会永远保存在数据库中.
  • 事物的提交和回滚

    • commit
    • rollback
相关推荐
阿七想学习几秒前
MySQL《事务》
数据库·mysql
Yang_yangyang5 分钟前
mysql定时备份、打包、传输
数据库·mysql·自动化
basketball61614 分钟前
Python torchvision.transforms 下常用图像处理方法
开发语言·图像处理·python
大大大水蜜桃17 分钟前
DNS主从同步及解析
数据库
兔子蟹子19 分钟前
Java集合框架解析
java·windows·python
宁酱醇23 分钟前
各种各样的bug合集
开发语言·笔记·python·gitlab·bug
DKPT24 分钟前
正则表达式
java·数据库·笔记·学习·正则表达式
CodeJourney.26 分钟前
DeepSeek与WPS的动态数据可视化图表构建
数据库·人工智能·信息可视化
谷晓光30 分钟前
Python 中 `r` 前缀:字符串处理的“防转义利器”
开发语言·python
姚毛毛31 分钟前
Windows上,10分钟构建一个本地知识库
python·ai·rag