zoukankan      html  css  js  c++  java
  • pymysql 的使用以及 commit 与roback

    """
    问题:
    如何能在python中去使用数据库存取数据?
    使用pymysql模块

    """

    import pymysql

    """pymysql使用步骤
    核心类 Connect链接用 和Cursor读写用
    1.与数据库服务器建立链接
    2.获取游标对象 (用于发送和接收数据)
    3.用游标执行sql语句
    4.使用fetch方法来获取执行的结果
    5.关闭链接 先关游标 再关链接

    游标的常用方法
    1.创建游标 conn.cursor(指定查询结果的数据类型)
    2.excute 执行sql
    3.fetchone(当sql只有一条记录时) many(sql有多条并且需要指定条数) all(多条)
    4.scroll 用于修改游标的当前位置


    注意: pymysql 默认不提交修改 但是注意(指的是对表中记录的操作不提交) 像删库 删表 是无法撤销的


    """
    # 创建链接得到一个链接对象
    conn = pymysql.Connect(
    host="127.0.0.1", # 数据库服务器主机地址
    user="root", # 用户名
    password="admin", # 密码
    database="day42", #数据库名称
    port=3306, # 端口号 可选 整型
    charset="utf8" # 编码 可选
    )
    # 获取游标对象 pymysql.cursors.DictCursor指定 返回的结果类型 为字典 默认是元祖类型
    cursor = conn.cursor(pymysql.cursors.DictCursor)

    # 查询数据
    sql = "select *from emp"

    # 执行sql 如果是select 语句返回的是 查询的条数
    res = cursor.execute(sql)
    print(res)

    # 获取查询的结果
    # print(cursor.fetchall())
    # print(cursor.fetchone())
    # print(cursor.fetchone())
    # print(cursor.fetchmany(1))
    # print(cursor.fetchall())

    # scroll
    print(cursor.fetchone())
    cursor.scroll(-1)
    print(cursor.fetchall())


    # 关闭链接
    cursor.close()
    conn.close()


    #########################################################################################
    #########################################################################################
    ## commit 提交确认
    ##roback 回滚 就是返回上一步操作的结果

    import pymysql
    # 创建链接得到一个链接对象
    conn = pymysql.Connect(
    host="127.0.0.1", # 数据库服务器主机地址
    user="root", # 用户名
    password="admin", # 密码
    database="day42", #数据库名称
    port=3306, # 端口号 可选 整型
    charset="utf8" # 编码 可选
    )
    # 获取游标对象 pymysql.cursors.DictCursor指定 返回的结果类型 为字典 默认是元祖类型
    cursor = conn.cursor(pymysql.cursors.DictCursor)

    # # 添加数据
    # res = cursor.execute("insert into emp values(100,'胡歌','男',30,1,'job',60000)")
    # if res:
    # print("插入成功")
    # else:
    # print("插入失败")


    # 提交修改 因为pymysql 模块默认是启用事务的 你的sql语句 如果不提交 相当于没有执行

    # conn.commit()
    # res = cursor.execute("drop database day42")


    # res = cursor.execute("delete from t1 where id = 1")
    # print(res)

    try:
    cursor.execute("update moneyTable set money = money - 50 where name = '小明'")
    #如果小花的账户出问题了 无法更新数据 那就需要回滚
    cursor.execute("update moneyTable set money = money + 50 where name = '小花'")
    conn.commit()
    except:
    conn.rollback()



    cursor.close()
    conn.close()

    # 小明有100块 准备给小花转50
    # update moneyTable set money = money - 50 where name = "小明";
    # 发生一些别错误 如果发生了错误 就执行撤销操作 rollback;
    # update moneyTable set money = money + 50 where name = "小花";
















  • 相关阅读:
    原生CSS、HTML 和 JavaScript 实现酷炫表单
    Vite2 如何设置打包后文件名
    读罢effective java,并不感觉特别好
    第六章部分习题答案
    第七章部分习题答案
    第八章部分习题答案
    mybatis 3.3.0之前版本的一个空指针BUG
    避免使用finalize方法
    mlp房价预测
    逻辑回归
  • 原文地址:https://www.cnblogs.com/1832921tongjieducn/p/11128951.html
Copyright © 2011-2022 走看看