Python3连接MySQL(pymysql)模拟转账实现代码
本文实例为大家分享了Python3连接MySQL模拟转账的具体实现代码,供大家参考,具体内容如下
#coding:utf8 importsys importpymysql classTransferMoney(object): def__init__(self,conn): self.conn=conn defcheck_acct_available(self,acctid): cursor=self.conn.cursor() try: sql="select*fromaccountwhereacctid=%s"%acctid cursor.execute(sql) print("check_acct_available:"+sql) rs=cursor.fetchall() iflen(rs)!=1: raiseException("账号%s不存在"%acctid) finally: cursor.close() defhas_enough_money(self,acctid,money): cursor=self.conn.cursor() try: sql="select*fromaccountwhereacctid=%sandmoney>%s"%(acctid,money) cursor.execute(sql) print("has_enough_money:"+sql) rs=cursor.fetchall() iflen(rs)!=1: raiseException("账号%s余额不足"%acctid) finally: cursor.close() defreduce_money(self,acctid,money): cursor=self.conn.cursor() try: sql="updateaccountsetmoney=money-%swhereacctid=%s"%(money,acctid) cursor.execute(sql) print("reduce_money:"+sql) ifcursor.rowcount!=1: raiseException("账号%s减款失败"%acctid) finally: cursor.close() defadd_money(self,acctid,money): cursor=self.conn.cursor() try: sql="updateaccountsetmoney=money+%swhereacctid=%s"%(money,acctid) cursor.execute(sql) print("add_money:"+sql) ifcursor.rowcount!=1: raiseException("账号%s加款失败"%acctid) finally: cursor.close() deftransfer(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() exceptExceptionase: self.conn.rollback() raisee 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) exceptExceptionase: print("出现问题"+str(e)) finally: conn.close()
以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。