摘要:數(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,詳見鏈接描述
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
此處,保證你有一個(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ù)庫表并添加值
刪除指定值
批量管理
查看
獲取表得字段名和表頭
字段名是指在以關(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
摘要:實(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 圖片切...
摘要:多進(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ì)真正地提...
摘要:是否則檢驗(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í),...
摘要:新型數(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...
摘要:定義了所有元素的對(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 定義了...
閱讀 2070·2021-10-11 10:59
閱讀 928·2021-09-23 11:21
閱讀 3553·2021-09-06 15:02
閱讀 1614·2021-08-19 10:25
閱讀 3370·2021-07-30 11:59
閱讀 2365·2019-08-30 11:27
閱讀 2580·2019-08-30 11:20
閱讀 2969·2019-08-29 13:15