python連接mysql代碼_Python3連接MySQL(pymysql)轉賬代碼

# coding:utf8

import sys

# Python3 采用pymysql 連接MySQL

import pymysql

class TransferMoney(object):

def __init__(self,conn):

self.conn=conn

def check_acct_available(self,acctid):

cursor = self.conn.cursor()

try:

sql="select * from account where acctid=%s" % acctid

cursor.execute(sql)

print ("check_acct_available:"+sql)

rs = cursor.fetchall()

if len(rs) != 1:

raise Exception("賬號%s不存在"% acctid)

finally:

cursor.close()

def has_enough_money(self,acctid,money):

cursor = self.conn.cursor()

try:

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

cursor.execute(sql)

print ("has_enough_money:"+sql)

rs = cursor.fetchall()

if len(rs) != 1:

raise Exception("賬號%s余額不足"% acctid)

finally:

cursor.close()

def reduce_money(self,acctid,money):

cursor = self.conn.cursor()

try:

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

cursor.execute(sql)

print ("reduce_money:"+sql)

if cursor.rowcount != 1:

raise Exception("賬號%s減款失敗" % acctid)

finally:

cursor.close()

def add_money(self,acctid,money):

cursor = self.conn.cursor()

try:

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

cursor.execute(sql)

print ("add_money:"+sql)

if cursor.rowcount != 1:

raise Exception("賬號%s加款失敗" % acctid)

finally:

cursor.close()

def transfer(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()

except Exception as e:

self.conn.rollback()

raise e

if __name__=="__main__":

source_acctid=sys.argv[1]

target_acctid=sys.argv[2]

money=sys.argv[3]

conn = pymysql.Connect(

host='localhost',

unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock",

port=3306,

user='root',

passwd='123456',

db='python_db',

)

tr_money=TransferMoney(conn)

try:

tr_money.transfer(source_acctid,target_acctid,money)

except Exception as e:

print ("出現問題"+str(e))

finally:

conn.close()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534125.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534125.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534125.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

gc java root_C#技術漫談之垃圾回收機制(GC)

GC的前世與今生雖然本文是以.NET作為目標來講述GC,但是GC的概念并非才誕生不久。早在1958年,由鼎鼎大名的圖林獎得主John McCarthy所實現的Lisp語言就已經提供了GC的功能,這是GC的第一次出現。Lisp的程序員認為內存管理太重要了,所…

中信銀行c語言筆試題庫,中信銀行筆試題型及題目

中信銀行筆試題型及題目考試題型一:專業知識(2個小時)1.專業知識單選,60題,每題1分。2.專業知識多選,20題,每題1分,未選全即少選得0.5分,錯選、漏選得0分。3.英語閱讀,20分&#xff…

北航軟件工程碩士_21考研擇校 | 北京航空航天大學軟件工程怎么樣?

??? 軟件工程考研獨家平臺撰稿 | 康康哥編輯 | 麗麗姐本文由懂計算機、軟件工程的博士師哥原創01學校名氣北京航空航天大學,簡稱“北航”,是一所把“985”、“211”、“雙一流”寫進骨子里的學校。為什么這么說呢?這得從源頭說起&#xff…

kettle同步數據到hive 巨慢_超詳細教程,kettle ETL mysql到hadoop hive數據抽取,值得收藏...

那么如何將mysql數據導入到hive里呢,kettle里有自帶方法,可以通過表輸入和表輸出來實現,不過自帶的方法載入數據極其緩慢,不推薦使用這種方法。1、hive建表注意hive表使用“^”作為分隔符,這個可以更具實際情況來。2、…

linux 查看path文件,linux入門之環境變量與文件查找

環境變量分類當前 Shell 進程私有用戶自定義變量,如上面我們創建的 temp 變量,只在當前 Shell 中有效。Shell 本身內建的變量。從自定義變量導出的環境變量。declare tmp;tmp"shiyanlou i love y";echo $tmp ; **不要忘記$**實驗樓…

python手機編譯器可以干什么_世界上最好的Python編輯器是什么?

在這種情況下,你需要使用一個 IDE(集成開發環境)或專用的代碼編輯器。由于 Python 是最流行的編程語言之一,IDE 的選擇也非常多。那么問題來了:「究竟什么樣的 IDE 最適合 Python?」 很明顯,沒有…

c是過程化語言嗎數據庫,A.數據庫語言B.過程化語言C.宿主語言D.數據庫管理系統...

A.數據庫語言B.過程化語言C.宿主語言D.數據庫管理系統更多相關問題[填空題] 為了安全起見,起動發動機前要檢查()有無行人。---叉車操作和保養手冊第2-77.在起動叉車前()以警告周圍的人。[單選] 制造廠規定叉車走合期一…

python讀取xlsx文件pandas_用Python的pandas框架操作Excel文件中的數據教程

引言 本文的目的,是向您展示如何使用pandas來執行一些常見的Excel任務。有些例子比較瑣碎,但我覺得展示這些簡單的東西與那些你可以在其他地方找到的復雜功能同等重要。作為額外的福利,我將會進行一些模糊字符串匹配,以此來展示一…

delphi 生成 超大量xml_用OpenCV4實現圖像的超分別率

用OpenCV4實現圖像的超分別率本實驗原文鏈接: f"https://arxiv.org/pdf/1807.06779.pdf">https://arxiv.org/pdf/1807.06779.pdf原文摘要單圖像超分辨率(SISR)的主要挑戰是如何恢復微小紋理等高頻細節。然而,大多數最…

dubbo全局異常處理_基于spring aop的dubbo異常統一處理

dubbo統一異常處理,調用方只顯示封裝后的異常。1、返回封裝后的Exception2、返回封裝后的統一返回信息import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Aspect;import org.slf4j.Logger;import org.slf4j.LoggerFactory;impo…

python123平臺作業答案第十一周_馬哥2016全新Linux+Python高端運維班第十次作業

系統的INPUT和OUTPUT默認策略為DROP,請完成以下關于iptables的題目;iptables -A INPUT -d 10.18.11.13 -p tcp --dport 22 -j ACCEPT #允許ssh端口 iptables -A OUTPUT -s 10.18.11.13 -p tcp --sport 22 -j ACCEPT iptables -P OUTPUT DROP #設置OUTPUT…

義教志愿服務系統c語言,[志愿服務]以己為師 東科學子義教傳愛心

為積極響應國家教育計劃,豐富孩子們的暑期生活,進一步落實“春泥”課堂先進義教理念,7月12日,浙江海洋大學東海科學技術學院大學生“海島征程十五載,紅色基因永傳承”赴螞蟻島實踐團23名隊員走進螞蟻島文化禮堂&#x…

主動斷開socket鏈接_TCP連接與斷開詳解(socket通信)

http://blog.csdn.net/Ctrl_qun/article/details/52518479一、TCP數據報結構以及三次握手TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的、可靠的、基于字節流的通信協議,數據在傳輸前要建立連接,傳輸完畢后還要斷開連接。…

大整數算術求值 c語言 棧,用C語言實現 多位整數的四則運算,用棧,例如56*(12+20)-102/2...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓gets(szExpression);// 中綴表達式轉后綴表達式&#xff0c;結果保存在expression中for (int i 0; i < strlen(szExpression); i){if (isspace(szExpression[i])) // 空白字符{if (bFindBegin){expression[num].type 1;expres…

java可視化壓縮_WEB可視化技術發展

EverCraft一直在關注Web可視化技術的發展&#xff0c;本文對國外一篇感覺很不錯的綜述性文章進行翻譯&#xff0c;供這一領域的愛好者相互學習。這篇paper的信息為&#xff1a;“Mwalongo, F., et al., State-of-the-Art Report in Web-based Visualization. COMPUTER GRAPHICS…

thumbdata4刪除后果_安卓手機上巨大的.thumbdata4圖片預讀緩存清理方法

以下是目前找到比較有效的幫 .thumbdata4-文件瘦身的好方法.下面的一大堆廢話的核心就是進手機設置>應用程序>顯示系統程序>媒體存儲器>存儲>清除數據/緩存.重啟后會發現thumbdata還會出現但是沒有數GB那么大了.How do I Reset the AndroidMedia Scan Database?…

android自定義alertdialog不現實輸入法,自定義的dialog中的EditText無法彈出輸入法解決方案...

1.解決無法彈出輸入法&#xff1a;在show()方法調用之前&#xff0c;用dialog.setView(new EditText(context))添加一個空的EditText&#xff0c;由于是自定義的AlertDialog&#xff0c;有我們指定的布局&#xff0c;所以設置這個不會影響我們的功能&#xff0c;這樣就可以彈出…

python爬取微博內容_請問該如何通過python調用新浪微博的API來爬取數據?

1&#xff1a;安裝python(這個不多說啦) 2&#xff1a;下載新浪微博SDK的python包&#xff0c;解壓為weibopy目錄 3&#xff1a;申請AppKey&#xff0c; 流程&#xff1a; 1&#xff1a;通過oAuth認證 按我的理解簡化如下&#xff1a; 用戶在新浪微博給的頁面輸入賬號密碼&…

android 保活方案_Android 后臺保活手段總結 (上篇)

Android 后臺保活手段總結 (上篇)由于眾所周知的限制&#xff0c;在國內無法使用GCM推送服務&#xff0c;想要自己搭建推送服務的話&#xff0c;有兩個繞不開的技術點&#xff0c;一個是TCP長連的保活&#xff0c;另一個就是后臺進程的保活。雖然看起來是老生常談的問題&#x…

linux修改棧指針x86,為什么x86-64 Linux系統調用會修改RCX,這個值意味著什么?

我正在嘗試使用sys_brk syscall在linux中分配一些內存.這是我嘗試過的&#xff1a;BYTES_TO_ALLOCATE equ 0x08section .textglobal _start_start:mov rax, 12mov rdi, BYTES_TO_ALLOCATEsyscallmov rax, 60syscall根據linux調用約定,我希望返回值在rax寄存器中(指向已分配內存…