推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
334862132
V2EX  ›  Python

Python 写的 mysql 升级倒着运行的问题

  •  
  •   334862132 · Feb 15, 2019 · 2327 views
    This topic created in 2675 days ago, the information mentioned may be changed or developed.
    升级用的 python 里面的 mysql 原生写的
    数据库有 3 个状态 0 1 2 ,原状态为 0
    第一个 sql 升级状态把 0 升级为 1(处理中)
    之后写了一个事物
    处理成功后把数据库状态升级为 2 失败则升级数据库为 0 (都同时升级其他字段)

    运行有的时候网络波动 会出现处理完成后状态为 1 并且事物所处理的字段也填充上了,这是什么鬼
    3 replies    2019-02-15 18:14:48 +08:00
    mayorbryant
        1
    mayorbryant  
       Feb 15, 2019   ❤️ 1
    感觉楼主描述的有点绕啊,根据我的理解,你这个现象很正常啊,说明回写为 2 的操作并没有执行成功啊,
    在你写的事务中应该有这样的伪代码

    start transaction
    done something
    if done:
    回写 2
    transaction commit
    else:
    回写 0
    transaction rollback
    xpresslink
        2
    xpresslink  
       Feb 15, 2019   ❤️ 1
    处理成功后把数据库状态升级为 2 失败则升级数据库为 0 (都同时升级其他字段)

    不太理解你说的,用数据库事务去处理如果失败则回滚到前一个状态,应该是 1 啊,你失败则升级为 0 是什么鬼。
    ksedz
        3
    ksedz  
       Feb 15, 2019   ❤️ 1
    可能有多线程,或者重复数据导致了覆盖
    解决办法是第一个 sql 加个条件,只处理状态为 0 的数据
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3007 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 03:31 · PVG 11:31 · LAX 20:31 · JFK 23:31
    ♥ Do have faith in what you're doing.