国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python操作MySQL模擬銀行轉賬

2020-02-22 23:26:28
字體:
來源:轉載
供稿:網友

今天在慕課網上學習了有關于python操作MySQL的相關知識,在此做些總結。python操作數據庫還是相對比較簡單的,由于python統一了各個數據庫的接口程序,也就是所謂的Python DB,所以無論使用何種數據可,都可以用統一的接口對數據庫進行操作。操作中主要涉及connection對象的操作和cursor的操作,前者主要是為了建立起python與數據庫的數據交換通道,后者則是訪問數據的游標,也可以理解為指針。數據庫的相關結構化語言在Python中均是以字符串的形式呈現的。另外注意rollback的重要性,一旦操作失敗,所有操作都要回滾到之前的狀態,否則會發生錯誤。

另外,在編寫實例的時候,對于面向對象的編程思路又有了新的認識,自頂向下的程序編寫模式非常有利于拆分程序的功能,分而治之。面向對象的封裝性在此提醒的淋漓盡致!

代碼如下,在原有基礎上,我又增加了添加記錄的功能。

#coding=utf8 import MySQLdb import sys  class TranseferMonet(object):    def __init__(self,conn):     self.conn = conn    def createNewUser(self,userID,money):     cursor = self.conn.cursor()     try:       sql = 'INSERT account VALUES(%s,%s)' %(str(userID),str(money))       cursor.execute(sql)       self.conn.commit()     except Exception as e:       self.conn.rollback()       raise e    def transferMoney(self,transeferID,recivierID,money):     try:       self.checkID(transeferID)       self.checkID(receiverID)       self.checkEnoughMoney(transferID,money)       self.subMoney(transferID,money)       self.addMoney(receiverID,money)       self.conn.commit()     except Exception as e:       self.conn.rollback()       raise e    def checkID(self,userID):     cursor = self.conn.cursor()     try:       sql = 'SELECT userID FROM account WHERE userID = %s' %str(userID)       cursor.execute(sql)       rs = cursor.fetchall()       if len(rs) != 1:         raise Exception("ID錯誤!")     finally:       cursor.close()    def checkEnoughMoney(self,transferID,money):     cursor = self.conn.cursor()     try:       sql = 'SELECT money FROM account WHERE userID = %s and money >= %s' %(str(transferID),str(money))       cursor.execute(sql)       rs = cursor.fetchall()       if len(rs) != 1:         raise Exception("余額不足!")     finally:       cursor.close()   def subMoney(self,transferID,money):     cursor = self.conn.cursor()     try:       sql = 'UPDATE account SET money = money-%s WHERE userID = %s' %(str(money),str(transferID))       cursor.execute(sql)       if cursor.rowcount != 1:         raise Exception('減款失敗!')     finally:       cursor.close()    def addMoney(self,receiverID,money):      cursor = self.conn.cursor()     try:       sql = 'UPDATE account SET money = money+%s WHERE userID = %s' %(str(money),str(receiverID))       cursor.execute(sql)       if cursor.rowcount != 1:         raise Exception('加款失敗!')     finally:       cursor.close()  if __name__=="__main__":    transferID = 2002   receiverID = 2001   money = 300    newID = 2003   newmoney = 900    conn = MySQLdb.connect(host = '127.0.0.1',port = 3306,user = 'root',passwd = '914767195',db = 'test',charset = 'utf8')    trMoney = TranseferMonet(conn)    try:     trMoney.transferMoney(transferID,receiverID,money)   except Exception as e:     print "轉賬錯誤"+str(e)   try:     trMoney.createNewUser(newID,newmoney)   except Exception as e:     print "創建用戶失敗!"+str(e)   finally:     conn.close()             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肃北| 太白县| 邮箱| 封开县| 电白县| 庆安县| 赤城县| 烟台市| 礼泉县| 茂名市| 横山县| 布尔津县| 怀柔区| 盐山县| 施秉县| 永仁县| 孙吴县| 新闻| 陆良县| 长丰县| 衡阳市| 山西省| 阳原县| 巩留县| 福安市| 宝兴县| 沙湾县| 慈利县| 龙陵县| 滕州市| 呼伦贝尔市| 清丰县| 沁阳市| 阿克| 桓台县| 巧家县| 四会市| 宁阳县| 石阡县| 江孜县| 太和县|