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

时间:2014-01-06 08:31:41

标签: python mysql mysql-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, ))

有任何推荐方式吗?

2 个答案:

答案 0 :(得分:0)

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

connection.autocommit(0);

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

connection.commit();

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

答案 1 :(得分:0)

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

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

使用这种方法有很多好处:

  1. 您集中了逻辑,可以从应用程序的许多地方调用它;
  2. 少量代码;
  3. 默认情况下,一旦对db进行简单的操作,MySQL就会在函数中使用原子性;
  4. 我希望它有所帮助!