我有一个使用Tornado异步框架编写的Python应用。当收到HTTP请求时,将调用此方法:
三个数据库操作之间是相互关联的。由于这是一个并发应用程序,因此可能会同时发生多个这样的HTTP调用,并同时访问同一个数据库。
为了确保数据完整性,重要的是在该方法中调用这三个数据库操作时,没有其他进程在这些数据库行之间进行读写。
我该如何确保这个方法具有数据库的原子性?Tornado有这方面的装饰器吗?
@classmethod
def my_method(cls, my_arg1):
# Do some Database Transaction #1
x = get_val_from_db_table1(id=1, 'x')
y = get_val_from_db_table2(id=7, 'y')
x += x + (2 * y)
# Do some Database Transaction #2
set_val_in_db_table1(id=1, 'x', x)
return True
三个数据库操作之间是相互关联的。由于这是一个并发应用程序,因此可能会同时发生多个这样的HTTP调用,并同时访问同一个数据库。
为了确保数据完整性,重要的是在该方法中调用这三个数据库操作时,没有其他进程在这些数据库行之间进行读写。
我该如何确保这个方法具有数据库的原子性?Tornado有这方面的装饰器吗?