摘要:數(shù)據(jù)庫是在版本中用于連接服務(wù)器的一個庫,中則使用。就是數(shù)據(jù)庫表的結(jié)構(gòu)。安全管理器返回表得格式列內(nèi)容表得描述表頭銀行轉(zhuǎn)賬原賬號向目標(biāo)賬號轉(zhuǎn)賬,數(shù)據(jù)寫進(jìn)數(shù)據(jù)庫內(nèi)。做此實驗前,保證你有數(shù)據(jù)庫里面有數(shù)據(jù)庫表數(shù)據(jù)庫表中有賬號數(shù)據(jù)和金額數(shù)據(jù)。
數(shù)據(jù)庫
PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務(wù)器的一個庫,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
此處,保證你有一個名為"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) #指定操作主機,指定用戶和密碼,編碼格式為"utf8"時,中文才可以顯示,autocommit自動提交對數(shù)據(jù)庫的操作 #2.創(chuàng)建一個游標(biāo),用來向數(shù)據(jù)庫發(fā)送指令 cur = conn.cursor() #3.實現(xiàn)對數(shù)據(jù)庫的增刪改查 ##3.1選擇需要操作的數(shù)據(jù)庫 conn.select_db("sheen") #3.2對數(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) #批量對數(shù)據(jù)實現(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, 返回的是一個元組; print("查看5條信息",cur.fetchmany(5)) #從游標(biāo)位置向后 #cur.fetchall返回的是一個元組; print("第一次查找所有信息:",cur.fetchall()) cur.scroll(0,mode="absolute") #移動游標(biāo)位置到數(shù)據(jù)庫表頭 print("第二次查找所有信息:",cur.fetchall()) cur.scroll(-10,mode="relative") #移動游標(biāo)位置到數(shù)據(jù)庫表倒數(shù)第10個的位置 print("最后10個信息:",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ù)據(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)賬
原賬號向目標(biāo)賬號轉(zhuǎn)賬,數(shù)據(jù)寫進(jìn)數(shù)據(jù)庫內(nèi)。
做此實驗前,保證你有數(shù)據(jù)庫transinfo,里面有數(shù)據(jù)庫表bankdata,數(shù)據(jù)庫表中有賬號數(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帳號是否存在; # 2. target_id帳號是否存在; # 3. 是否有足夠的錢 # 4. source_id扣錢 # 5. target_id加錢 # 6. 提交對數(shù)據(jù)庫的操作 """ self.check_account(self.source) # 1. source_id帳號是否存在; self.check_account(self.target) # 2. target_id帳號是否存在; 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. 提交對數(shù)據(jù)庫的操作 except Exception as e: self.conn.rollback() #撤銷對于數(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此賬號不存在" %(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("您的賬號有%s元" %(exist_money)) if exist_money>=money: return True else: raise Exception("您的賬號%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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/42442.html
摘要:實現(xiàn)用鼠標(biāo)點擊下一頁時,更換圖片的功能。表格全選依次遍歷所有的單選框,設(shè)置狀態(tài)為選中如果狀態(tài)為未選中,則設(shè)置所有的單選框為未選中狀態(tài)依次遍歷所有的單選框,設(shè)置狀態(tài)為選中添加刪除編號姓名性別年齡 切換圖片 當(dāng)我們?yōu)g覽網(wǎng)頁時,時常出現(xiàn)圖片輪播場景。實現(xiàn)用鼠標(biāo)點擊‘下一頁’時,更換圖片的功能。 #當(dāng)前目錄下建立img目錄,存放圖片,圖片命名格式img1.jpg 圖片切...
摘要:多進(jìn)程執(zhí)行任務(wù)結(jié)束,創(chuàng)建進(jìn)程和銷毀進(jìn)程是時間的,如果長度不夠,會造成多線程快過多進(jìn)程多線程執(zhí)行任務(wù)結(jié)束,進(jìn)程間通信生產(chǎn)者消費者模型與隊列演示了生產(chǎn)者和消費者的場景。 進(jìn)程 Python是運行在解釋器中的語言,查找資料知道,python中有一個全局鎖(GIL),在使用多進(jìn)程(Thread)的情況下,不能發(fā)揮多核的優(yōu)勢。而使用多進(jìn)程(Multiprocess),則可以發(fā)揮多核的優(yōu)勢真正地提...
摘要:是否則檢驗指定的對象是否存在。由于的模塊實現(xiàn)主要調(diào)用庫,所以各個平臺可能有所不同。時間格式時間戳的方式通常來說,時間戳是指格林威治時間年月日時分秒北京時間年月日時分秒起至現(xiàn)在的總秒數(shù)。元組方式元組共有個元素,返回的函數(shù)主要有,,。 os模塊 os模塊提供了多數(shù)操作系統(tǒng)的功能接口函數(shù)。當(dāng)os模塊被導(dǎo)入后,它會自適應(yīng)于不同的操作系統(tǒng)平臺,根據(jù)不同的平臺進(jìn)行相應(yīng)的操作,在python編程時,...
摘要:新型數(shù)據(jù)類型中存儲系列數(shù)據(jù),比較常見的數(shù)據(jù)類型有,除此之外,還有數(shù)據(jù)類型元組的只能通過訪問,模塊的子類不僅可以使用的訪問,還可以通過的進(jìn)行訪問。可以將理解為中的結(jié)構(gòu),其首先將各個命名,然后對每個賦予數(shù)據(jù)。 namedtuple新型數(shù)據(jù)類型 Python中存儲系列數(shù)據(jù),比較常見的數(shù)據(jù)類型有l(wèi)ist,除此之外,還有tuple數(shù)據(jù)類型.tuple元組的item只能通過index訪問,coll...
摘要:定義了所有元素的對象和屬性,以及訪問它們的方法。換言之,是關(guān)于如何獲取修改添加或刪除元素的標(biāo)準(zhǔn)。根據(jù)標(biāo)準(zhǔn),中所有內(nèi)容都是節(jié)點。好比我有兩個下拉列表,第一列表是選擇省份,那么我選擇某一個省份,那么另一個列表也會對應(yīng)顯示該省份的城市。 什么是DOM? DOM (Document Object Model) 譯為文檔對象模型,是 HTML 和 XML 文檔的編程接口。HTML DOM 定義了...
閱讀 2085·2021-10-11 10:59
閱讀 936·2021-09-23 11:21
閱讀 3568·2021-09-06 15:02
閱讀 1621·2021-08-19 10:25
閱讀 3379·2021-07-30 11:59
閱讀 2375·2019-08-30 11:27
閱讀 2588·2019-08-30 11:20
閱讀 2978·2019-08-29 13:15