如何在MySQL中一次原子操作更新后选择值

2024-04-25 15:30:11 发布

您现在位置:Python中文网/ 问答频道 /正文

这里我想增加字段计数,然后在一个原子操作中选择计数结果。在

代码是:

sql = ("update user_cout set count = count+1 "
               "where username=%s")
cursor = connection.cursor()
cursor.execute(sql, (username, ))
cursor.execute("select count from user_count "
                       "where username=%s", (username, ))

有什么建议吗?在


Tags: 代码executesqlcountusernameupdateconnectionwhere
2条回答

@linbo,您可以在数据库(check how to do so here)中创建一个函数/过程,然后在代码中只运行一个调用:

sql = ("SELECT MY_CUSTOM_FUNC(%s)")
cursor = connection.cursor()
cursor.execute(sql, (username, ))

使用这种方法有许多优点:

  1. 你集中你的逻辑,它可以从你的应用程序的许多地方调用
  2. 更少的代码
  3. MySQL在函数中默认使用原子性,一旦它是数据库的一个简单操作

我希望这有帮助!在

您需要在事务中执行UPDATESELECT(即不自动提交的语句):

connection.autocommit(0);

然后可以执行现有语句并显式地将它们提交到数据库:

^{pr2}$

注意,要实现原子性,user_count表必须使用事务存储引擎(如InnoDB)。在

相关问题 更多 >