#coding:utf8

importsysimport psycopg2 #PostgreSQL

classTransferMoney(object):def __init__(self, conn):

self.conn=conndefcheck_acct_available(self, acctid):

cursor=self.conn.cursor()try:

sql= "select * from account where acctid='%s'" %acctidprint("check_acct_available:" +sql)

cursor.execute(sql)

rs=cursor.fetchall()if len(rs) != 1:raise Exception("帐号%s不存在" %acctid)finally:

cursor.close()defhas_enough_money(self, acctid, money):

cursor=self.conn.cursor()try:

sql= "select * from account where acctid='%s' and money>%s" %(

acctid, money)print("has_enough_money:" +sql)

cursor.execute(sql)

rs=cursor.fetchall()if len(rs) != 1:raise Exception("帐号%s没有足够的金额" %acctid)finally:

cursor.close()defreduce_money(self, acctid, money):

cursor=self.conn.cursor()try:

sql= "update account set money=money-%s where acctid='%s'" %(

money, acctid)print("reduce_money:" +sql)

cursor.execute(sql)if cursor.rowcount != 1:raise Exception("帐号%s减款失败" %acctid)finally:

cursor.close()defadd_money(self, acctid, money):

cursor=self.conn.cursor()try:

sql= "update account set money=money+%s where acctid='%s'" %(

money, acctid)print("add_money:" +sql)

cursor.execute(sql)if cursor.rowcount != 1:raise Exception("帐号%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()exceptException as e:

self.conn.rollback()print("transfer出现异常:" +str(e))raiseedefmain():

source_acctid= sys.argv[1]print("转出帐号=" +source_acctid)

target_acctid= sys.argv[2]print("转入帐号=" +target_acctid)

money= sys.argv[3]print("金额=" +money)#连接数据库 MySql

#conn = pymysql.Connect(

#host='localhost',

#port=3306,

#user='root',

#passwd='root',

#db='OtkDb',

#charset='utf8')

#连接数据库PostgreSQL

conn =psycopg2.connect(

host='localhost',

port=5432,

user='postgres',

password='postgres',

database='OtkDb')

tr_money=TransferMoney(conn)try:

tr_money.transfer(source_acctid, target_acctid, money)exceptException as e:print("main出现异常:" +str(e))finally:

conn.close()if __name__ == '__main__':

main()

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐