为了账号安全,请及时绑定邮箱和手机立即绑定

那几个SQL都没报错,但是就是不给提交~

# coding:utf8

import sys

import MySQLdb



class TransferMoney(object):

    def __init__(self,conn):

        self.conn =conn

        


    

    def check_acct_available(self, source_acctid):

        cursor =self.conn.cursor()

        try:

            sql="select * from account where accid=%s" %source_acctid

            cursor.execute(sql)

            print"check_acct_available:"+sql

            rs =cursor.fetchall()

            if len(rs) !=1:

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

        finally:

            cursor.close()

    

    def has_enough_money(self, source_acctid, money):

        cursor =self.conn.cursor()

        try:

            sql="select * from account where accid=%s and money>%s" %(source_acctid,money)

            cursor.execute(sql)

            print"has_enough_money:"+sql

            rs =cursor.fetchall()

            if len(rs) !=1:

                raise Exception("%s钱不够"%source_acctid)

        finally:

            cursor.close()

    

    

    def reduce_money(self, source_acctid, money):

        cursor =self.conn.cursor()

        try:

            sql="update account set money=money-%s where accid=%s " %(money,source_acctid)

            cursor.execute(sql)

            print"reduce_money:"+sql

            

            if cursor.rowcount !=1:

                raise Exception("%s操作失败"%source_acctid)

        finally:

            cursor.close()

    

    

    def add_money(self, target_acctid, money):

        cursor =self.conn.cursor()

        try:

            sql="update account set money=money+%s where accid=%s" %(money,source_acctid)

            cursor.execute(sql)

            print"add_money"+sql

            if cursor.rowcount !=1:

                raise Exception("%s操作失败"%source_acctid)

        finally:

            cursor.close()

    

    

    def insert1(self, source_acctid, target_acctid):

        cursor=self.conn.cursor()

        try:

            sql="insert into account values (3,100)"

            cursor.execute(sql)

            print sql

            if cursor.rowcount !=1:

                raise Exception("添加失败")

        finally:

            cursor.close()

        

            

    

    

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

        try:

            self.insert1(source_acctid,target_acctid)

            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=MySQLdb.Connect(host='127.0.0.1',user='root',passwd='111111',port=3306,db='test')

    tr_money =TransferMoney(conn)

    try:

        tr_money.transfer(source_acctid,target_acctid,money)

        print '111'

    except Exception as e:

        print e

    finally:

        conn.close()

    


正在回答

1 回答

求大神解释啊~~

0 回复 有任何疑惑可以回复我~
#1

蚂蚁帅帅

报异常了吗,把异常贴一下;可以加个断点Debug一下;
2015-12-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Python操作MySQL数据库
  • 参与学习       85011    人
  • 解答问题       171    个

本视频教程讲解Python如何开发MySQL数据库程序

进入课程

那几个SQL都没报错,但是就是不给提交~

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信