使用Sqlite数据库的事物操作,编写一段模拟银行转账的逻辑代码
时间: 2023-05-20 10:06:08 浏览: 388
Android数据库中事务操作方法之银行转账示例
5星 · 资源好评率100%
以下是使用Sqlite数据库的事物操作,编写的一段模拟银行转账的逻辑代码:
```
import sqlite3
def transfer_money(from_account, to_account, amount):
conn = sqlite3.connect('bank.db')
cursor = conn.cursor()
try:
# 开始事务
conn.execute('BEGIN TRANSACTION')
# 查询转出账户余额
cursor.execute('SELECT balance FROM accounts WHERE account=?', (from_account,))
from_balance = cursor.fetchone()[0]
# 查询转入账户余额
cursor.execute('SELECT balance FROM accounts WHERE account=?', (to_account,))
to_balance = cursor.fetchone()[0]
# 判断转出账户余额是否足够
if from_balance < amount:
raise Exception('余额不足')
# 更新转出账户余额
from_balance -= amount
cursor.execute('UPDATE accounts SET balance=? WHERE account=?', (from_balance, from_account))
# 更新转入账户余额
to_balance += amount
cursor.execute('UPDATE accounts SET balance=? WHERE account=?', (to_balance, to_account))
# 提交事务
conn.commit()
except Exception as e:
# 回滚事务
conn.rollback()
print(e)
finally:
# 关闭数据库连接
conn.close()
```
这段代码模拟了银行转账的逻辑,使用了Sqlite数据库的事务操作,确保了转账过程的原子性和一致性。
阅读全文