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

首頁 > 編程 > Python > 正文

Python操作MySQL模擬銀行轉賬

2020-01-04 15:42:29
字體:
來源:轉載
供稿:網友

今天在慕課網上學習了有關于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() 

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 房产| 田东县| 循化| 修武县| 雷山县| 敦化市| 安康市| 故城县| 太仓市| 奎屯市| 城固县| 邯郸县| 平潭县| 延津县| 盐源县| 庐江县| 龙江县| 四平市| 衡南县| 府谷县| 梁河县| 澳门| 泸州市| 开远市| 五家渠市| 喀喇沁旗| 辽阳县| 页游| 景东| 毕节市| 舒兰市| 奉节县| 平定县| 太白县| 郑州市| 冕宁县| 三门峡市| 绥宁县| 江西省| 马公市| 泸州市|