1. 程式人生 > >Python簡單資料庫實現

Python簡單資料庫實現

本篇文章主要就是針對python  連線資料庫的入門,是我整理的慕課網上老師的視訊以及程式碼,僅供初學者們參考哈哈哈哈(程式碼自己適當加入了一些修改)

慕課網網視訊連結:http://www.imooc.com/learn/475

首先:慕課網老師使用的是eclipse編寫程式碼,我使用的是pycharm  兩者都可用,大家可以隨機選擇

然後要安裝MySQL資料庫,官網下載MYSQL便可,具體安裝方式,請參考:http://jingyan.baidu.com/article/c45ad29cf2c471051653e249.html安裝方式都是相同的,大家隨意參考一個就可以(安裝好MySQL後,會設定一個密碼,大家要切記這個密碼,以後在使用python  連線資料庫的時候都會使用)

然後這個時候還不行哦,還需要安裝python mysql(這個官網下載便可,我記得這個應該是有python版本選擇,Python2.7就選擇2.7,3.3就選擇3.3便可)  

以及sqlyog(這個需要註冊碼,可以根據下載的型號不同從網上百度註冊碼,本寶寶都是在百度隨機搜尋安裝的,安裝教程連結:http://jingyan.baidu.com/article/47a29f243ca21dc01523994f.html

然後!就開始正式連線啦!

首先要開啟sqlyog,連線以及建立方式請參考:http://jingyan.baidu.com/article/8065f87fe31e312330249870.html

在本程式碼例項中,實現的是一個轉賬的功能,從源ID中轉走相應的錢數去另一個目標ID中。
然後寶寶們需要在這個裡面新建一個數據庫資料庫名字很隨意啦,然後在資料庫中新增一個名字為account  的表

表的內容類似於:


然後這樣就可以啦,這個時候需要開啟你的Python編譯器,新建一個test.py,然後輸入以下程式碼,這個程式碼如果哪裡還不明白可以去看慕課網老師的視訊哦,慕課網上老師給的輸入方式,我表示都是失敗了,沒有辦法成功使用,然後我修改了視訊中的ID以及錢數的輸入方式,大家可以參考一下,然後run以下test.py

#coding:utf8
import sys
import MySQLdb

class TransferMoney:
    def __init__(self,conn):
        self.conn=conn
    def transfer(self,source_acctid,target_acctid,money):
        try:
            self.check_acct(source_acctid)
            self.check_acct(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


    def check_acct(self,source_acctid):
        try:
            cursor = self.conn.cursor()
            sql = "select * from account where id=%s" %source_acctid
            cursor.execute(sql)
            print "check_accis" + sql
            rs = cursor.fetchall()
            if len(rs) != 1:
                raise Exception("賬號不存在")
        finally:
            cursor.close()



    def has_enough_money(self, source_acctid, money):
        try:
            cursor = self.conn.cursor()
            sql = "select * from account where id=%s and money>%s" % (source_acctid, money)
            cursor.execute(sql)
            print "has_enough_money" + sql
            rs = cursor.fetchall()
            if len(rs) != 1:
                raise Exception("錢數不夠不存在")
        finally:
            cursor.close()

    def reduce_money(self,source_acctid,money):
        try:
            cursor = self.conn.cursor()
            sql = "update account set money=money-%s where id=%s" %(money,source_acctid)
            cursor.execute(sql)
            print "reduce_money" + sql
            rs = cursor.fetchall()
            if cursor.rowcount!=1:
                raise Exception("賬號%s減款失敗" % source_acctid)
        finally:
            cursor.close()

    def reduce_money(self,source_acctid,money):
        try:
            cursor = self.conn.cursor()
            sql = "update account set money=money-%s where id=%s" %(money,source_acctid)
            cursor.execute(sql)
            print "reduce_money" + sql
            rs = cursor.fetchall()
            if cursor.rowcount!=1:
                raise Exception("賬號%s減款失敗" % source_acctid)
        finally:
            cursor.close()

    def add_money(self,source_acctid,money):
        try:
            cursor = self.conn.cursor()
            sql = "update account set money=money+%s where id=%s" %(money,source_acctid)
            cursor.execute(sql)
            print "add_money" + sql
            rs = cursor.fetchall()
            if cursor.rowcount!=1:
                raise Exception("賬號%s加款失敗" % source_acctid)
        finally:
            cursor.close()


if __name__ == "__main__":
    source_acctid,target_acctid ,money = raw_input("請輸入轉賬人的ID以及被收到轉賬人的ID 以及錢數分別用空號隔開\n").strip().split(' ')
    print source_acctid,target_acctid,money
    conn = MySQLdb.connect(
                          host = '127.0.0.1',
                          user = 'root',
                          passwd = '1015shuxue=',
                          port = 3306,
                          db= 'lctest'
                          )
    tr_money = TransferMoney(conn)
    try:
        tr_money.transfer(source_acctid, target_acctid, money)
    except Exception as e:
        print "出現問題" + str(e)
    finally:
        conn.close()

然後執行便可

執行結果展示:

下圖為輸入使用者的ID,前一個是轉賬人的ID,後面一個是被轉賬人的ID,然後是錢數。


這個時候再開啟SQLyog,並點選重新整理按鈕,可以看到這時的資料庫已經有了變化,從下面這張圖可以看到,錢數變化了。


希望能幫到大家哦!愛你們!

相關推薦

Python簡單資料庫實現

本篇文章主要就是針對python  連線資料庫的入門,是我整理的慕課網上老師的視訊以及程式碼,僅供初學者們參考哈哈哈哈(程式碼自己適當加入了一些修改) 慕課網網視訊連結:http://www.imooc.com/learn/475 首先:慕課網老師使用的是eclipse編寫

Python 簡單計算器實現

下程式碼用於實現簡單計算器實現,包括兩個數基本的加減乘除運輸: 程式原始碼: choice = int(input('選擇運算:\n1、相加\n2、相減\n3、相乘\n4、相除\n請輸入

python簡單框架實現爬取NBA球員資料

寒假期間就像爬取球員資料,一直 沒有動手寫。一下是程式碼和註釋,存在一些小小的bug,就是檔案寫入問題,學習完寫入exel後再修改。爬蟲總排程程式: #-*-coding:UTF-8 -*- from Html_Download import HtmlDownload

【一】,python簡單爬蟲實現

cli 正則表達式 doctype cve 中一 則表達式 正則表達 分享圖片 mage 1.獲取當前頁的課程名稱,地址:https://www.ichunqiu.com/courses/webaq 2.選區其中一門課程名稱查看源代碼: 代碼如下: &l

Python實現遠端mysql連線並進行簡單資料庫操作

1.linux伺服器 安裝mysql: apt-get install mysql-server #Root使用者安裝mysql以及相關服務  apt-get install mysql-client  apt-get install libmysqlclient-dev

DNN的BP算法Python簡單實現

images 相等 1.0 [] 重要 work arange imp into BP算法是神經網絡的基礎,也是最重要的部分。由於誤差反向傳播的過程中,可能會出現梯度消失或者爆炸,所以需要調整損失函數。在LSTM中,通過sigmoid來實現三個門來解決記憶問題,用tenso

寫一個Python通過select實現的最簡單的web框架

127.0.0.1 log put lec func select odi block pos 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import socket 5 import selec

5行python代碼實現簡單的網絡爬蟲

結果 auto itl max nbsp gitbook 代碼實現 roc 分享圖片 1、python代碼如下圖,我們從http://gitbook.cn/這網站中爬取數據。2、運行上圖代碼之前要下載安裝好chardet和requests安裝包,可以在我的博客裏免費下載這兩

Python簡單實現產生隨機位數的密碼及註意事項小結

初學 需要 模塊 swd watermark cal raw 感謝 digits Python簡單實現產生隨機位數的密碼 #!/usr/bin/python#coding:utf-8#產生任意位數的隨機密碼import random,string #導入隨機數和字符串模

Python簡單實現Web服務器

Python 簡單web服務器實現 import socket import re import gevent from gevent import monkey monkey.patch_all()# 識別等待時間,讓協程切換 def client_handler(client_socket)

18、OpenCV Python 簡單實現一個圖片生成(類似抖音生成字母人像)

gaussian int read 。。 str gray clas range TE 1 __author__ = "WSX" 2 import cv2 as cv 3 import numpy as np 4 5 def local_threshold(i

基於SVM的python簡單實現驗證碼識別

save def lse highlight pro imp bubuko uac 如果 1. 爬取驗證碼圖片 from urllib import request def download_pics(pic_name): url = ‘http://wsbs

SGD/BGD/MBGD使用python簡單實現

while [1] python 批量 break pri 向量 梯度下降 其他 算法具體可以參照其他的博客: 隨機梯度下降: # coding=utf-8 ‘‘‘ 隨機梯度下降 ‘‘‘ import numpy as np # 構造訓練數據 x = np.arange

python操作資料庫實現使用者名稱、密碼登入資料庫,首次登入自行設定密碼,並返回工資表明細。

python操作資料庫,實現使用者名稱、密碼登入資料庫,首次登入自行設定密碼,並返回工資表明細。 1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 # 匯入依賴包 5 import psycopg2 6 7 print("營

OneR演算法的Python簡單實現

OneR演算法就是,在已有資料中,根據具有相同特徵值的個體最可能屬於哪個類別進行分類。即取效果最好的那個特徵進行分類。 #-*- coding=utf-8 -*- # import numpy as np from sklearn.datasets import load_iris f

Python基於中文分詞的簡單搜尋引擎實現 Whoosh

# -*- coding: utf-8 -*- """ Created on Tue Nov 13 22:53:33 2018 @author: Lenovo """ from whoosh.fields import Schema,TEXT,ID from jieba.analyse imp

Python簡單實現ATM自動存取款機

# ATM後臺資料庫 id cipher name money ATMDataBase = [ {‘id’:‘001’,‘cipher’:‘123456’,‘name’:‘張三’,‘money’:1000}, {‘id’:‘002’,‘cipher’:‘123456’,‘name

python簡單實現Kinesis方法

1.建立自己的應用目錄,cd進入目錄 2.Kinesis增加應用: cp ~/amazon-kinesis-client-python-master/samples/sample_kclpy_app.py . cp ~/amazon-kinesis-client-python-mas

python簡單實現學生管理系統

#!/usr/bin/env python # -*- coding: UTF-8 -*- # Author:Du Fei import os #學號,姓名,年齡,性別,身高 allStudentsList=[] #從檔案中讀取資料 def readFromFile(fileName): if

python學習之實現簡單的miniWeb伺服器

webServer部分: #!/usr/bin/venv python3 # coding: utf-8 import socket import multiprocessing import re import dynamic.WebFrame as WebFra