黑松山资源网 Design By www.paidiu.com
本文实例为大家分享了Python3连接MySQL模拟转账的具体实现代码,供大家参考,具体内容如下
# coding:utf8 import sys import pymysql class TransferMoney(object): def __init__(self,conn): self.conn=conn def check_acct_available(self,acctid): cursor = self.conn.cursor() try: sql="select * from account where acctid=%s" % acctid cursor.execute(sql) print ("check_acct_available:" + sql) rs = cursor.fetchall() if len(rs) ! = 1: raise Exception("账号%s不存在"% acctid) finally: cursor.close() def has_enough_money(self,acctid,money): cursor = self.conn.cursor() try: sql="select * from account where acctid=%s and money>%s" % (acctid,money) cursor.execute(sql) print ("has_enough_money:"+sql) rs = cursor.fetchall() if len(rs) ! = 1: raise Exception("账号%s余额不足"% acctid) finally: cursor.close() def reduce_money(self,acctid,money): cursor = self.conn.cursor() try: sql = "update account set money=money-%s where acctid=%s" % (money,acctid) cursor.execute(sql) print ("reduce_money:"+sql) if cursor.rowcount ! = 1: raise Exception("账号%s减款失败" % acctid) finally: cursor.close() def add_money(self,acctid,money): cursor = self.conn.cursor() try: sql="update account set money=money+%s where acctid=%s" % (money,acctid) cursor.execute(sql) print ("add_money:"+sql) if cursor.rowcount ! = 1: raise Exception("账号%s加款失败" % acctid) finally: cursor.close() def transfer(self,source_acctid,target_acctid,money): try: self.check_acct_available(source_acctid) self.check_acct_available(target_acctid) self.has_enough_money(source_acctid,money) self.reduce_money(source_acctid,money) self.add_money(target_acctid,money) self.conn.commit() except Exception as e: self.conn.rollback() raise e if __name__ == "__main__": source_acctid = sys.argv[1] target_acctid = sys.argv[2] money = sys.argv[3] conn = pymysql.Connect( host = 'localhost', unix_socket = "..mysql/mysql.sock", port = 3306, user = 'root', passwd = '', db = 'python_db', ) tr_money = TransferMoney(conn) try: tr_money.transfer(source_acctid,target_acctid,money) except Exception as e: print ("出现问题" + str(e)) finally: conn.close()
以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。
黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com
暂无评论...
更新日志
2024年10月09日
2024年10月09日
- s14全球总决赛瑞士轮什么时候开始 s14瑞士轮开始时间介绍
- 晨报|《使命召唤21》全球发布预告 《异形:隔离》续作官宣开发中
- 隐形女联动毁灭博士?杰西卡·阿尔巴与小唐尼晒合影
- 《博德之门3》7号补丁发布后:Mod下载量达到2200万次!
- 徐璨宾《井底的蚯蚓》[FLAC/分轨][218.37MB]
- 王冰冰《Vaga Luna 月球漫游》[320K/MP3][62.76MB]
- 证声音乐图书馆《蔚蓝海岸·爵士度假日》[320K/MP3][59.79MB]
- 群星.1993-飞图合唱歌曲精丫飞图】【WAV+CUE】
- 王霏霏.2024-TOOOOO.BUSY(EP)【SNMUSIC】【FLAC分轨】
- 张宇.2016-好男人的情歌NEWXRCD【金牌大风】【WAV+CUE】
- 《食戟之灵》小林龙胆兔女郎比基尼版模型即将发售
- 重大里程碑!九号电动第500万台智能两轮电动车正式下线
- TGA主持人发文祝贺《暗喻幻想》 国外网友:提名稳了?
- 【原神】V5.0攻略 | 旋曜玉帛收集攻略(序号81~序号90)
- 【原神】V5.0攻略 | 旋曜玉帛收集攻略(序号91~序号100)