【实例】 python数据库编程

来源:互联网 发布:知乎布鲁塞尔自由大学 编辑:程序博客网 时间:2024/06/11 18:46
#coding:utf8#转账系统import sysimport MySQLdbclass TransferMoney(object):    def __init__(self, conn):        self.conn = conn        def check_acct_available(self, id):        cursor = self.conn.cursor()        try:            sql = "select * from account where acctid=%s" % id            print sql            cursor.execute(sql)            rs = cursor.fetchall()            if len(rs) != 1:                raise Exception("id %s is not existed" % id)        finally:            cursor.close()                def has_enough_money(self, id, money):        cursor = self.conn.cursor()        try:            sql = "select * from account where acctid=%s and money>%s" % (id, money)            print sql            cursor.execute(sql)            rs = cursor.fetchall()            if len(rs) != 1:                raise Exception("id %s doesn't have enough money" % id)        finally:            cursor.close()        def reduce_money(self, id, money):        cursor = self.conn.cursor()        try:            sql = "update account set money = money-%s where acctid=%s" % (money, id)            print sql            cursor.execute(sql)            if cursor.rowcount != 1:                raise Exception("id %s reduces unsuccessfully" % id)        finally:            cursor.close()        def add_money(self, id, money):        cursor = self.conn.cursor()        try:            sql = "update account set money = money + %s where acctid = %s" % (money, id)            print sql            cursor.execute(sql)            if cursor.rowcount != 1:                raise Exception("id %s adds unsuccessfully" % id)        finally:            cursor.close()        def transfer(self,source_id, target_id, money):        try:            self.check_acct_available(source_id)            self.check_acct_available(target_id)            self.has_enough_money(source_id, money)            self.reduce_money(source_id, money)            self.add_money(target_id, money)            self.conn.commit()        except Exception as e:            self.conn.rollback()            raise eif __name__ == "__main__":    source_id = sys.argv[1]    target_id = sys.argv[2]    money = sys.argv[3]        conn = MySQLdb.Connect(host='127.0.0.1',user='root', passwd = '', \                           port = 3306, db = 'python')    tr_money = TransferMoney(conn)        try:        tr_money.transfer(source_id, target_id, money)    except Exception as e:        print "出现问题"+str(e)    finally:        conn.close()

0 0
原创粉丝点击