zoukankan      html  css  js  c++  java
  • mysql for python,银行转账模拟

    学习中, 本人为初学者。勿喷。

    #-*- coding:utf-8 -*-
    import MySQLdb
    class Tranferaccount(object):
        def __init__(self,sqlcon):
            self.sqlcon = sqlcon
        def account_check_avaiable(self,accid):
            cursor = self.sqlcon.cursor()
            sql_str = "select * from account where accid = %s "% accid
            try:
                print 'account_check_avaiable:%s'%sql_str
                cursor.execute(sql_str)
                rs = cursor.fetchall()
                if len(rs)!=1:
                    raise Exception('此账号%s不存在'%accid) 
            finally:
                cursor.close()
        def account_enough_money(self,accid,money):
            cursor = self.sqlcon.cursor()
            sql_str = "select * from account where accid = %s and money >%s "% (accid,money)
            try:
                print 'account_enough_money:%s'%sql_str
                cursor.execute(sql_str)
                rs = cursor.fetchall()
                if len(rs)!=1:
                    raise Exception('此账号%s余额不足'%accid)
            finally:
                cursor.close()
        def account_reduce_money(self,accid,money):
            cursor = self.sqlcon.cursor()
            sql_str = "update account set money = money-%s where accid = %s "% (money,accid)
            try:
                print 'account_reduce_money:%s'%sql_str
                cursor.execute(sql_str)
                if cursor.rowcount != 1:
                    raise Exception('此账号%s减款失败'%accidd)
            finally:
                cursor.close()
        def account_add_money(self,accid,money):
            cursor = self.sqlcon.cursor()
            sql_str = "update account set money = money+%s where accid = %s "% (money,accid)
            try:
                print 'account_add_money:%s'%sql_str
                cursor.execute(sql_str)
                if cursor.rowcount != 1:
                    raise Exception('此账号%s加款失败'%accid)
            finally:
                cursor.close()                                        
        def tranfer(self,source_accid,dest_accid,money):
            try:
                self.account_check_avaiable(source_accid)
                self.account_check_avaiable(dest_accid)
                self.account_enough_money(source_accid,money)
                self.account_reduce_money(source_accid,money)
                self.account_add_money(dest_accid,money)
                self.sqlcon.commit()
            except Exception as e:
                self.sqlcon.rollback()
                raise e
    if __name__ == "__main__":
        source_accid = 11
        dest_accid = 12
        money = 100
        conn = MySQLdb.connect(host='127.0.0.1',user='root',db = 'liunx',passwd='root',port=3306,charset='utf8')
        tr_money = Tranferaccount(conn)
        try:
            tr_money.tranfer(source_accid,dest_accid,money)
        except Exception as e:
            print '出现问题:%s'% e
        finally:  
            conn.close()
  • 相关阅读:
    我告诉你 电脑软件工具
    mysql 查询当天、本周,本月,上一个月的数据
    springboot:springboot+mybatis多数据源最简解决方案
    MySQL数据库优化的(经典必看)
    MyBatis 的强大特性之一便是它的动态 SQL之常用属性使用
    你知道Spring 中使用了哪些设计模式?
    kafka 相关面试问题
    掌握TCP/IP的通信原理(三次握手、四次挥手)。
    jsp和servlet实现文件的上传和下载
    Java获取数据库记录通过javabean映射,并存入list集合
  • 原文地址:https://www.cnblogs.com/nx520zj/p/5897053.html
Copyright © 2011-2022 走看看