国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python大佬養(yǎng)成計(jì)劃----win下對(duì)數(shù)據(jù)庫的操作

wangtdgoodluck / 3337人閱讀

摘要:數(shù)據(jù)庫是在版本中用于連接服務(wù)器的一個(gè)庫,中則使用。就是數(shù)據(jù)庫表的結(jié)構(gòu)。安全管理器返回表得格式列內(nèi)容表得描述表頭銀行轉(zhuǎn)賬原賬號(hào)向目標(biāo)賬號(hào)轉(zhuǎn)賬,數(shù)據(jù)寫進(jìn)數(shù)據(jù)庫內(nèi)。做此實(shí)驗(yàn)前,保證你有數(shù)據(jù)庫里面有數(shù)據(jù)庫表數(shù)據(jù)庫表中有賬號(hào)數(shù)據(jù)和金額數(shù)據(jù)。

數(shù)據(jù)庫

PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務(wù)器的一個(gè)庫,Python2中則使用mysqldb。
win系統(tǒng)安裝mysql,詳見鏈接描述

數(shù)據(jù)庫常見命令

mysql -uroot -psheen
登陸數(shù)據(jù)庫

show databases;
顯示所有的數(shù)據(jù)庫

create database sheen;
創(chuàng)建新的數(shù)據(jù)庫sheen

use sheen;
進(jìn)入數(shù)據(jù)庫sheen

show tables;
顯示sheen里的所有數(shù)據(jù)庫表

create table star(name varchar(30),age int);
創(chuàng)建新的數(shù)據(jù)庫表star,

desc star;
查看數(shù)據(jù)庫表的格式

insert into star VALUES("user1",10);
插入值

select * from star;
顯示star數(shù)據(jù)庫表中的所有內(nèi)容

update star set age=11 where name="user1";
更新star數(shù)據(jù)庫表中user1的年齡為11

delete from star where name="user1";
刪除star數(shù)據(jù)庫表中的user1

drop table star;
刪除star數(shù)據(jù)庫表

drop database sheen;
刪除數(shù)據(jù)庫sheen

連接數(shù)據(jù)庫

此處,保證你有一個(gè)名為"sheen"的數(shù)據(jù)庫

import pymysql
#這里注意python2需要導(dǎo)入數(shù)據(jù)庫模塊為mysqldb
#python3需要導(dǎo)入數(shù)據(jù)庫模塊為pymysql

#1.連接數(shù)據(jù)庫
conn = pymysql.connect(host="localhost",user="root",passwd="sheen",
                       charset="utf8",autocommit=True)  #指定操作主機(jī),指定用戶和密碼,編碼格式為"utf8"時(shí),中文才可以顯示,autocommit自動(dòng)提交對(duì)數(shù)據(jù)庫的操作

#2.創(chuàng)建一個(gè)游標(biāo),用來向數(shù)據(jù)庫發(fā)送指令
cur = conn.cursor()

#3.實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的增刪改查

##3.1選擇需要操作的數(shù)據(jù)庫
conn.select_db("sheen")

#3.2對(duì)數(shù)據(jù)庫內(nèi)容的增刪改查
try:
    #添加新的數(shù)據(jù)庫表
    # add_table = "create table star(name varchar(30),age int)"   #創(chuàng)建數(shù)據(jù)庫表,內(nèi)容有名字、年齡
    # cur.execute(add_table)    #執(zhí)行數(shù)據(jù)庫操作命令

    #給數(shù)據(jù)庫表添加值
    # insert_sqli1 = "insert into star VALUES ("user3", 100);"  #給數(shù)據(jù)庫表更新值
    # insert_sqli2 = "insert into star VALUES ("user4", 100);"  #給數(shù)據(jù)庫表更新值
    # cur.execute(insert_sqli1)
    # cur.execute(insert_sqli2)

    #刪除數(shù)據(jù)庫表中的內(nèi)容
    # del_table_info = "delete from star where name="user3""
    # cur.execute(del_table_info)

    #批量對(duì)數(shù)據(jù)實(shí)現(xiàn)增刪改
    # users=[("user"+str(i),i)for i in range(100)]
    # insert_sqli3 = "insert into star VALUES (%s,%s);"
    # cur.executemany(insert_sqli3,users) #批量添加信息,cur.executemany()

    #查看數(shù)據(jù)庫表的信息
    select_sql = "select * from star;"
    result = cur.execute(select_sql)
    print("查看語句的返回結(jié)果:",result)  #返回信息數(shù)目,查看語句的返回結(jié)果: 100

    #查看數(shù)據(jù)庫表的內(nèi)容
    # cur.fetchone類似與文件的操作f.readline, 每次只讀取一條記錄;
    print("此條信息:",cur.fetchone())
    print("此條信息:",cur.fetchone())
    print("此條信息:",cur.fetchone())
    # cur.fetchmany, 類似于f.readlines, 返回的是一個(gè)元組;
    print("查看5條信息",cur.fetchmany(5))    #從游標(biāo)位置向后
    #cur.fetchall返回的是一個(gè)元組;
    print("第一次查找所有信息:",cur.fetchall())

    cur.scroll(0,mode="absolute")   #移動(dòng)游標(biāo)位置到數(shù)據(jù)庫表頭
    print("第二次查找所有信息:",cur.fetchall())

    cur.scroll(-10,mode="relative") #移動(dòng)游標(biāo)位置到數(shù)據(jù)庫表倒數(shù)第10個(gè)的位置
    print("最后10個(gè)信息:",cur.fetchall())

except Exception as e:
    print("Failed:",e)
else:
    print("Success")

# 4. 先關(guān)閉游標(biāo)
cur.close()
# 5. 關(guān)閉數(shù)據(jù)庫連接
conn.close()

創(chuàng)建數(shù)據(jù)庫表并添加值

刪除指定值

批量管理

查看

獲取數(shù)據(jù)庫表信息

獲取表得字段名和表頭
字段名是指在以關(guān)系模型為數(shù)據(jù)結(jié)構(gòu)的二維表中每一列的標(biāo)識(shí)。就是數(shù)據(jù)庫表的結(jié)構(gòu)。
表頭是可以用來索引的鍵值。

import pymysql
conn = pymysql.connect(host="localhost",user="root",passwd="sheen",
                       charset="utf8",autocommit=True,db="sheen")

with conn:  #安全管理器
    print("is_open:",conn.open) #Return True if the connection is open
    cur = conn.cursor()
    res = cur.execute("select * from star;")
    desc = cur.description  #返回表得格式列內(nèi)容(("name", 253, None, 30, 30, 0, True), ("age", 3, None, 11, 11, 0, True))
    print("表得描述:",desc)
    print("表頭:",",".join([item[0] for item in desc]))
    cur.close()

銀行轉(zhuǎn)賬

原賬號(hào)向目標(biāo)賬號(hào)轉(zhuǎn)賬,數(shù)據(jù)寫進(jìn)數(shù)據(jù)庫內(nèi)。
做此實(shí)驗(yàn)前,保證你有數(shù)據(jù)庫transinfo,里面有數(shù)據(jù)庫表bankdata,數(shù)據(jù)庫表中有賬號(hào)數(shù)據(jù)和金額數(shù)據(jù)。

import pymysql

class Trans_money(object):
    def __init__(self,source_id,target_id,count):
        self.source = source_id
        self.target = target_id
        self.count = count
        self.conn = pymysql.connect(host="localhost",user="root",passwd="sheen",
                       charset="utf8",db="transinfo")   #建立數(shù)據(jù)庫連接
        self.cur = self.conn.cursor()   #建立游標(biāo)

    def transfer_money(self):
        """
               轉(zhuǎn)賬方法:
                   # 1. source_id帳號(hào)是否存在;
                   # 2. target_id帳號(hào)是否存在;
                   # 3. 是否有足夠的錢
                   # 4. source_id扣錢
                   # 5. target_id加錢
                   # 6. 提交對(duì)數(shù)據(jù)庫的操作
               """
        self.check_account(self.source)            # 1. source_id帳號(hào)是否存在;
        self.check_account(self.target)            # 2. target_id帳號(hào)是否存在;
        self.enough_money(self.source,self.count)  # 3. 是否有足夠的錢

        try:
            self.reduce_source(self.count)     # 4. source_id扣錢
            self.increase_source(self.count)   # 5. target_id加錢
            self.conn.commit()                 # 6. 提交對(duì)數(shù)據(jù)庫的操作
        except Exception as e:
            self.conn.rollback()               #撤銷對(duì)于數(shù)據(jù)庫的更改操作, 回滾
        else:
            print("轉(zhuǎn)賬成功")


    def check_account(self,account):    #判斷原賬戶是否存在
        check_sql = "select * from bankdata where account=%s;" %(account)
        res  = self.cur.execute(check_sql)
        if res ==1:
            return True
        else:
            print("%s此賬號(hào)不存在" %(account))
    def enough_money(self,account,money):   #判斷原賬戶是否有足夠的錢
        affirm_sql = "select money from bankdata where account=%s;" %(self.source)
        re = self.cur.execute(affirm_sql)    #返回1,游標(biāo)位置在money
        exist_money = self.cur.fetchone()[0]    #查看金額數(shù)目
        print("您的賬號(hào)有%s元" %(exist_money))
        if exist_money>=money:
            return True
        else:
            raise Exception("您的賬號(hào)%s沒有足夠的金額,當(dāng)前余額為%s" %(self.source,exist_money))
    def reduce_source(self,money):  #扣錢函數(shù)
        try:
            update_sql = "update bankdata set money=money-%s where account=%s;" %(money,self.source)
            self.cur.execute(update_sql)
        except Exception as e:
            print("Failed:",e)
    def increase_source(self,money):    #加錢函數(shù)
        try:
            update_sql = "update bankdata set money=money+%s where account=%s;" %(money,self.target)
            self.cur.execute(update_sql)
        except Exception as e:
            print("Failed:",e)

if __name__=="__main__":
    tran = Trans_money("6107001","6107002",500)
    tran.transfer_money()

前期準(zhǔn)備

執(zhí)行結(jié)束

數(shù)據(jù)庫結(jié)果顯示

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42442.html

相關(guān)文章

  • python大佬養(yǎng)成計(jì)劃----JavaScript對(duì)html優(yōu)化

    摘要:實(shí)現(xiàn)用鼠標(biāo)點(diǎn)擊下一頁時(shí),更換圖片的功能。表格全選依次遍歷所有的單選框,設(shè)置狀態(tài)為選中如果狀態(tài)為未選中,則設(shè)置所有的單選框?yàn)槲催x中狀態(tài)依次遍歷所有的單選框,設(shè)置狀態(tài)為選中添加刪除編號(hào)姓名性別年齡 切換圖片 當(dāng)我們?yōu)g覽網(wǎng)頁時(shí),時(shí)常出現(xiàn)圖片輪播場(chǎng)景。實(shí)現(xiàn)用鼠標(biāo)點(diǎn)擊‘下一頁’時(shí),更換圖片的功能。 #當(dāng)前目錄下建立img目錄,存放圖片,圖片命名格式img1.jpg 圖片切...

    Lowky 評(píng)論0 收藏0
  • python大佬養(yǎng)成計(jì)劃-----多進(jìn)程

    摘要:多進(jìn)程執(zhí)行任務(wù)結(jié)束,創(chuàng)建進(jìn)程和銷毀進(jìn)程是時(shí)間的,如果長度不夠,會(huì)造成多線程快過多進(jìn)程多線程執(zhí)行任務(wù)結(jié)束,進(jìn)程間通信生產(chǎn)者消費(fèi)者模型與隊(duì)列演示了生產(chǎn)者和消費(fèi)者的場(chǎng)景。 進(jìn)程 Python是運(yùn)行在解釋器中的語言,查找資料知道,python中有一個(gè)全局鎖(GIL),在使用多進(jìn)程(Thread)的情況下,不能發(fā)揮多核的優(yōu)勢(shì)。而使用多進(jìn)程(Multiprocess),則可以發(fā)揮多核的優(yōu)勢(shì)真正地提...

    zhangfaliang 評(píng)論0 收藏0
  • python大佬養(yǎng)成計(jì)劃----os,datetime,time模塊補(bǔ)充

    摘要:是否則檢驗(yàn)指定的對(duì)象是否存在。由于的模塊實(shí)現(xiàn)主要調(diào)用庫,所以各個(gè)平臺(tái)可能有所不同。時(shí)間格式時(shí)間戳的方式通常來說,時(shí)間戳是指格林威治時(shí)間年月日時(shí)分秒北京時(shí)間年月日時(shí)分秒起至現(xiàn)在的總秒數(shù)。元組方式元組共有個(gè)元素,返回的函數(shù)主要有,,。 os模塊 os模塊提供了多數(shù)操作系統(tǒng)的功能接口函數(shù)。當(dāng)os模塊被導(dǎo)入后,它會(huì)自適應(yīng)于不同的操作系統(tǒng)平臺(tái),根據(jù)不同的平臺(tái)進(jìn)行相應(yīng)的操作,在python編程時(shí),...

    frank_fun 評(píng)論0 收藏0
  • python大佬養(yǎng)成計(jì)劃----excel操作

    摘要:新型數(shù)據(jù)類型中存儲(chǔ)系列數(shù)據(jù),比較常見的數(shù)據(jù)類型有,除此之外,還有數(shù)據(jù)類型元組的只能通過訪問,模塊的子類不僅可以使用的訪問,還可以通過的進(jìn)行訪問。可以將理解為中的結(jié)構(gòu),其首先將各個(gè)命名,然后對(duì)每個(gè)賦予數(shù)據(jù)。 namedtuple新型數(shù)據(jù)類型 Python中存儲(chǔ)系列數(shù)據(jù),比較常見的數(shù)據(jù)類型有l(wèi)ist,除此之外,還有tuple數(shù)據(jù)類型.tuple元組的item只能通過index訪問,coll...

    cpupro 評(píng)論0 收藏0
  • python大佬養(yǎng)成計(jì)劃----HTML DOM

    摘要:定義了所有元素的對(duì)象和屬性,以及訪問它們的方法。換言之,是關(guān)于如何獲取修改添加或刪除元素的標(biāo)準(zhǔn)。根據(jù)標(biāo)準(zhǔn),中所有內(nèi)容都是節(jié)點(diǎn)。好比我有兩個(gè)下拉列表,第一列表是選擇省份,那么我選擇某一個(gè)省份,那么另一個(gè)列表也會(huì)對(duì)應(yīng)顯示該省份的城市。 什么是DOM? DOM (Document Object Model) 譯為文檔對(duì)象模型,是 HTML 和 XML 文檔的編程接口。HTML DOM 定義了...

    leejan97 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<