• mysql commit和事务


    1、pymysql默认开启事务,对于表的数据的操作需要使用commit,

    但是如果删库删表的操作就不一样,没办法rollback

    一般来说用如下方法使用事务,如果不需要使用事务则不用rollback,直接commit就可以

    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()

    2、select语句需要commit吗。

    首先,mysql如果直接select,是默认自动commit,而pymysql是默认开启事务(需要手动commit)

    而是否要commit取决于师傅需要重复读, repeatable read,如果每次都要读取最新的更新,则需要commit。

    如果要在事务内重复读,则不需要commit,这与隔离级别有关。

    mysql默认隔离级别是repeatable read,

    四个级别分别是 read uncommited 很少用, read commited也叫nonrepeatable read,事务内不可重复度。 repeatable read解决了脏读,

    事务隔离级别 脏读 不可重复读 幻读 读未提交(read uncommitted) 是 是 是 不可重复读(read committed) 否 是 是 可重复读(repeatable read) 否 否 是 串行化(serializable) 否 否 否

    作者:一只贱熊猫
    链接:https://juejin.cn/post/6844903681196982285
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    3、

    一般来说connection可以保持,每次执行前使用conn.ping(reconnect=True)进行测试

    而cursor每次使用后都要关闭,最好使用

    with conn.execute(sql) as cursor

  • 相关阅读:
    ERROR com.opensymphony.xwork2.interceptor.ParametersInterceptor
    vscode中使用node服务调试,会在promise的reject出现断点报错
    koa-router匹配多个路由添加中间件函数
    react-router中的路由钩子使用
    在less中不能正常使用css3的calc属性的解决方法
    react-redux安装失败的问题
    npm脚本命令npm run script的使用
    npx的使用和理解
    babel的命令行工具babel-cli解析
    babel的.babelrc解析
  • 原文地址:https://www.cnblogs.com/yjybupt/p/14926120.html
Copyright © 2020-2023  润新知