python DB API MySQL 实战

#coding:utf8

import sys

import MySQLdb

//数据库temp,表单count

//python2.7

class TransferMoney(object):

    def __init__( self, conn):       //构造函数

        self.conn = conn

    def cheak_acct_available( self, acctid):

        curser = self.conn.curser()

        try:

            sql = "select * from count where acctid = %s "  %acctid

            curser.execute(sql)

            print "check_acct_available:"  + sql

            re = cursor.fetchall()

            if len(re) != 1:

                raise Exception("账号%s不存在"  %acctid)

         finally:

            cursor.close()   

    def has_enough_money(self, acctid, money):

        curser = self.conn.curser()

        try:

            sql = "select * from count where acctid = %s and money > %s" %(acctid,money)

            curser.execute(sql)

            print "has_enough_money:"  + sql

            re = cursor.fetchall()

            if len(re) != 1:

                raise Exception("账号%s没有足够的钱"  %acctid)

         finally:

            cursor.close() 

    def reduce_money(self, acctid, money):

        curser = self.conn.curser()

        try:

            sql = "updat accunt set money=money-%s where acctid = %s" %(money,acctid)

            curser.execute(sql)

            print "reduce_money:"  + sql

            re = cursor.fetchall()

            if cursor.rowcount != 1:

                raise Exception("账号%s减款失败"  %acctid)

         finally:

            cursor.close()


    def add_money(self, acctid, money)

        curser = self.conn.curser()

        try:

            sql = "updat accunt set money=money+%s where acctid = %s" %(money,acctid)

            curser.execute(sql)

            print "add_money:"  + sql

            re = cursor.fetchall()

            if cursor.rowcount != 1:

                raise Exception("账号%s加款失败"  %acctid)

         finally:

            cursor.close()

    def transfer( self , source_acctid, target_acctid, money):

        try:        

            self.cheak_acct_available(source_acctid)

            self.cheak_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 Except 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 = MySQLdb.Connect(host = '127.0.0.1', user= 'root' ,passwd = '123456', port =3306, db = 'temp')
    tr_money  = TransferMoney(conn)    //对象
    try:

        tr_money.transfer(source_acctid,target_acctid,money)

    except Exception as e:

        print "出现问题:" + str(e)

    finally:

        conn.close()


    

猜你喜欢

转载自blog.csdn.net/honey_babay/article/details/79678124