中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python操作MySQL模擬銀行轉賬

發布時間:2020-09-04 17:47:29 來源:腳本之家 閱讀:252 作者:freedom098 欄目:開發技術

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马关县| 凭祥市| 乐山市| 鞍山市| 阿拉善左旗| 锡林郭勒盟| 二连浩特市| 云林县| 醴陵市| 徐州市| 开远市| 平定县| 新平| 交城县| 阿荣旗| 桐城市| 石阡县| 都兰县| 常熟市| 长岛县| 东山县| 天门市| 汉川市| 灌阳县| 武城县| 虎林市| 茂名市| 长兴县| 麦盖提县| 高邮市| 北辰区| 汶川县| 龙南县| 凉山| 上栗县| 通道| 沾益县| 昌邑市| 德安县| 文山县| 广宗县|