日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

PYTHON1.day21

發布時間:2023/12/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PYTHON1.day21 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


Flush PRIVILEGES;?? -- 刷新權限并生效
6)查看授權
?? - 查看當前用戶: show grants;
?? -查看其他用戶:? show grants for '用戶名'@'客戶端';
7)吊銷權限(取消用戶的某個權限)
?? - 語法: revoke 權限列表 on 庫名.表名 from '用戶名'@'客戶端地址'
?? - 示例: 吊銷Daniel用戶所有庫,所有列表的插入數據權限
?????????? revoke insert on *.* from 'bank_user'@'%';
?????????? revoke insert on bank.* from 'bank_user'@'%';

4. 數據庫事務(重點)
?? - 事務(Transacyion):
?? - 數據庫執行一系列操作時,全都執行,全都不執行
???? 保證數據的一致性、正確性
?? - 例如在一筆轉賬中,執行需要三個操作,
???????? 從轉出賬戶減去相應金額
???????? 在轉入賬戶增加相應金額
???????? 登記一筆轉賬明細
???????? 以上三個操作,要么全部成功,要么全部失敗
?? 3)使用事務的情況
???? - 涉及到多表的增刪改操作
???? - 執行這些操作時需要保證一致性,正確性
?? 4)啟用事務條件要求:必須是Innodb存儲引擎
?? 5)事務的額特征(ACID):
????? - 原子性(Atomicity):事務是一個整體,要么全部執行,要么全部不執行
????? - 一致性(Consis.
????? tency):事務執行完成后,從一個一致狀態變成另一個一致狀態
????? - 隔離性(Isolation):不同的事務不會相互影響,干擾
????? - 持久性(Durability):一旦事務提交,對數據庫的修改就必須永久保留下來

?? 6)如何進行事務操作
??? - 開啟: start transaction
???? - 提交: commit
???? - 回滾:rollback

???? - 示例:在兩個賬戶間進行轉賬
???????????? 第一步:減去轉出賬戶余額
???????????? 第二步:在轉入賬號上加上相等的余額
???????????? 提交事務
???????????? start transaction;
???????????? update acct_new set balance = balance - 100
??????????????????? where acct_no = '6223450001';
???????????? update acct_new set balance = balance + 100
??????????????????? where acct_no ='622456000020';
???????????? commit;---或rollback
???????????? ----在提交事務前,重新登錄一個客戶端
???????????? ----查看數據是否變更

????
???? 7)SQL語句分類
????? - 數據查詢語言(DQL):查詢數據,不改變數據
????? - 數據定義語言(DDL):定義數據結構,如建表/庫,刪除庫/表,創建/刪除索引,修改表結構
????? - 數據操作語言(DML):對數據進行增刪改
????? - 數據控制語言(DCL):權限管理,事務操作,數據庫監視...

???
-------------------------------------------------day25.new---------------------------------------------------
1.鎖
?? 1)鎖:對數據庫的控制權
?? 2)目的:解決多個工作單元并發操作數據的正確性
?? 3)分類:
???? a)鎖類型
?????? - 讀鎖(共享鎖):加鎖后,可以讀取,但不能修改
?????? - 寫鎖(排它鎖):加鎖后,不能進行讀寫

??? b)鎖粒度
?????? - 行級鎖(細粒度):鎖定一行,并發效率高
???????? 控制較為復雜,消耗資源多
?????? - 表級鎖(粗粒度):鎖定整張表,并發效率低
???????? 控制簡單,消耗資源較少


2.存儲引擎
?? 1)什么是存儲引擎:表的存儲方式,包括存儲機制,索引機制,鎖定方式等
?? 2)基本操作:
???? - 查看:show engines;
???? - 查看某個表的存儲引擎方式:show create table 表名

???? -建表時指定存儲引擎
????? create table t1(id int primary key)engine=InnoDB default charset=utf8;
???????????????????????????????????????? engine 指定存儲
???? - 修改存儲引擎方式
?????? alter table t1 engine = MyISAM;

?? 3)常見存儲引擎
???? a)InooDB
????? 特點:支持事務,行級鎖,外鍵
????? 共享表空間
???? *.frm??? 表結構和索引
????? *.ibd??? 表記錄
????? show global variables like '%datadir'命令查看數據存儲位置????
????? sudo -i切換到root用戶,進入目錄查看

???? - 使用場合
?????? 更新操作密集的表
?????? 有數據庫事務支持的要求
?????? 自動災備,恢復
?????? 有外鍵約束要求
?????? 支持自增長字段(auto_increment)


???? b)MyISAM
?????? - 支持表級鎖定、不支持事務、不支持外鍵
???????? 不支持行鎖定,訪問速度較快
?????? - 獨享表空間
?????????? 表名.frm: 表結構
?????????? 表名.myd: 表數據
?????????? 表名.myi: 表索引

?????? - 適用場合
?????????? 查詢操作較多
?????????? 數據一致性要求較低(不支持事務)
?????????? 沒有外鍵約束

??? c)Memory(內存表):
???????? - 表結構存儲在磁盤上(硬盤),數據存儲在內存
?????????? 訪問速度很快
???????? - 文件:表名.frm?? 存儲表結構
???????? - 服務(或機器)重啟后,表中的數據丟失
???????? - 適用場合:
?????????????? 數據量小、訪問速度要求極快、訪問頻率高、
?????????????? 數據丟失后不會造成影響?
???????? - 示例:
?????????????? 1:創建memory引擎的表
???????????????? create table t2(id int)engine=memory;
?????????????? 2:插入數據并查詢
?????????????? 3:重啟服務,再查詢,數據消失
???????????????? sudo /etc/init.d/mysql restart


???? 3. E-R模型:實體關系模型
?????????? a)實體(Entry): 現實中可以區分的事物稱之為實體
?????????? b)關系(Relationship): 實體之間的聯系
???????????? - 一對一
???????????? - 一對多
???????????? - 多對多
?????????? c)屬性:實體所具有的數據特征
?????????? d)E-R圖:用圖形化方式,表達實體間的關系
???????????? 矩形:表示實體
???????????? 橢圓:實體的屬性
???????????? 菱形:實體間的關系
?????????????? 一對一:菱形左右各寫一個1
?????????????? 一對多:菱形左右分別用1,N來表示
?????????????? 多對多:菱形左右分別用M, N來表示
?????????? e)練習:畫出賬戶,交易明細,客戶實體之間的E-R圖(見ER圖.pptx)
???? 4. 使用Python訪問MySQL
?????? 1)pymysql庫:Python語言訪問MySQL接口
???????? - 安裝:
?????????? 在線:sudo pip3 install pymysql
?????????? 離線:
???????????? 第一步:下載安裝包,下載地址:
???????????????? https://pypi.org/project/PyMySQL/
???????????? PyMySQL-0.9.3.tar.gz
???????? 第二步:解壓包,并執行安裝
???????????????? tar -zxvf PyMySQL-0.9.3.tar.gz
???????????? cd PyMySQL-0.9.3
???????? 第三步:進入目錄,安裝
???????????? python3 setup.py install
???????? - 驗證:進入Python交互模式,執行導入包操作
???????????????? import pymysql
???????????? 如果不報錯,則說明安裝成功

??????? # 第一步:導入pymysql模塊
import pymysql
host = 'localhost'#服務器地址
user = 'root'#用戶名
passwd = '123456'#密碼
dbname = 'bank'#庫名稱

#第二步:建立到數據庫服務器的連接,創建連接對象
conn = pymysql.connect(host,user,passwd,dbname)
#第三步:獲取游標對象(cursor),通過調用數據庫連接 對象獲得游標????????
cursor = conn.cursor()
#第四步:利用cursor對象提供的方法,執行SQL語句
cursor.execute("select * from acct_new")
result = cursor.fetchall()#取查詢到的數據
for r in result:
???? tmp = "帳號:%s,戶名:%s,金額:%s"%(r[1],r[1],r[6])
???? print(tmp)
#第五步:提交事務(如果需要)
#第六步:關閉游標對象

cursor.close()
#第七步:關閉數據庫連接對象
conn.close()
?????? 2)PyMySQL訪問MySQL的流程
???????? 第一步:導入pymysql模塊
???????? 第二步:建立到數據庫服務器的連接,創建連接對象
???????? 第三步:創建游標對象(cursor),通過調用數據庫連接
???????????????? 對象獲得游標
???????? 第四步:利用cursor對象提供的方法,執行SQL語句
???????? 第五步:提交事務(如果需要)
???????? 第六步:關閉游標對象
???????? 第七步:關閉數據庫連接對象
??????
?????? 3)PyMySQL模塊的主要方法
???????? - connect:? 連接數據庫
???????????? 參數:host??? 服務器地址
?????????????? port??? 服務器端口(省略連默認端)
?????????????? user??? 用戶名
?????????????? passwd??? 密碼
?????????????? db??? 數據庫名稱
?????????????? charset??? 指定編碼格式

??????? - connection連接對象支持的方法
??????????? cursor()??????? 獲取游標
??????????? commit()??????? 提交事務
??????????? rollback()??? 回滾事務
??????????? close()??????? 關閉游標

??????? - cursor游標對象支持的方法
??????????? execute(sql)??? 執行SQL語句
??????????? fetchall()??? 取得查詢結果集中的所有數據
??????????? fetchone()??? 取查詢結果集中一筆數據
??????????? fetchmany(size)??? 取得指定筆數數據
??????????? close()??????? 關閉游標對象

?????????? 只讀屬性:
??????????? rowcount??????? 返回修改影響的筆數

?????? 4)示例:
????? 示例1:查詢
???????? # pymysql查詢示例
???????? import pymysql
???????? from db_conf import * #導入配置

??????? #建立到數據庫服務器的連接,創建連接對象
???????? conn = pymysql.connect(host, user, \
??????????????????? password, dbname)??????????????

??????? #創建游標對象(cursor),通過調用數據庫連接
???????? #對象獲得游標
???????? cursor = conn.cursor()

??????? #利用cursor對象,執行SQL語句
???????? sql = "select * from acct"
???????? cursor.execute(sql)? #執行SQL語句

??????? #取出查詢結果,并打印
???????? result = cursor.fetchall() #result是元組
???????? for r in result: #遍歷result
???????????? acct_no = r[0] #賬號
???????????? acct_name = r[1] #戶名
???????????? if r[6]: #判斷是否為空值
???????????? balance = float(r[6]) #余額
???????????? else:
???????????? balance = 0.00 #余額為空設置為0
???????????? print("賬號:%s, 戶名:%s, 余額:%.2f" % \
????????????? (acct_no, acct_name, balance))
???????? #關閉游標對象
???????? cursor.close()
???????? #關閉數據庫連接對象
???????? conn.close()
???????
??? ???? 示例2:插入
???????? # pymysql的插入示例
???????? import pymysql
???????? from db_conf import * #導入配置

??????? try:???????
???????????? conn = pymysql.connect(host, user, \
??????????????????? password, dbname)? #連接數據庫
???????????? cursor = conn.cursor()? #獲取游標
???????????? #執行SQL語句
???????????? sql = '''insert into
?????????????? acct(acct_no, acct_name, cust_no,
??????????????? acct_type, reg_date, status, balance)
?????????????? values('622345000010','Robert', 'C0010',
??????????????? 1, date(now()), 1, 33.00)'''???
???????????? print(sql)
???????????? cursor.execute(sql) #執行
???????????? conn.commit() #提交事務
???????????? print("Insert OK")
???????? except Exception as e:
???????????? print("數據庫插入異常")
???????????? print(e)
???????? finally:
???????????? cursor.close() #關閉游標
???????????? conn.close() #關閉連接

???????????
??????? 示例3:修改
???????? import pymysql
???????? from db_conf import * #導入配置

??????? try:???????
???????????? conn = pymysql.connect(host, user, \
??????????????????? password, dbname)? #連接數據庫
???????????? cursor = conn.cursor()? #獲取游標
???????????? #執行SQL語句
???????????? sql = '''update acct
????????????????? set balance = balance + 1000
???????????????? where acct_no='622345000010'
???????????? '''???
???????????? cursor.execute(sql) #執行
???????????? conn.commit() #提交事務
???????????? print("修改筆數:%d" % cursor.rowcount)
???????? except Exception as e:
???????????? print("數據庫修改異常")
???????????? print(e)
???????? finally:
???????????? cursor.close() #關閉游標
???????????? conn.close() #關閉連接

??????? 示例4:刪除
??????? # pymysql刪除示例
???????? import pymysql
???????? from db_conf import * #導入配置

??????? try:???????
???????????? conn = pymysql.connect(host, user, \
??????????????????? password, dbname)? #連接數據庫
???????????? cursor = conn.cursor()? #獲取游標
???????????? #執行SQL語句
???????????? sql = '''delete from acct
???????????? where acct_no='622345000010'
???????????? '''???
???????????? cursor.execute(sql) #執行
???????????? conn.commit() #提交事務
???????????? print("刪除筆數:%d" % cursor.rowcount)
???????? except Exception as e:
???????????? print("數據庫刪除異常")
???????????? print(e)
???????? finally:
???????????? cursor.close() #關閉游標
???????????? conn.close() #關閉連接

??? 課堂作業:賬戶管理修改、刪除功能添加上
?????????????
???? 5. SQL語句優化
?????? 1)在經常查詢、排序的字段上建立索引
?????? 2)盡量少使用不等于條件判斷,不等于會放棄使用索引
?????? 3)少使用null值判斷,null值判斷會放棄使用索引
?????? 4)條件判斷少使用or連接,in,not in
?????? 5)模糊查詢避免%前置
?????? 6)查詢時如果select *,直接寫成字段名會提高效率
?????? 7)盡量少在where子句中,使用字段進行運算。例如:
????????? select * from acct where balance / 2 > 5000
?????? 8)數值類型的字段,進行條件比較時,一般比
????????? 字符串比較效率更高

???? 作業:完善賬戶管理系統的修改、刪除功能
??????????? 賬戶管理系統啟動時,增加登錄功能
??????????? (原理:打印菜單前,先輸入用戶名、密碼
????????????? 并到數據庫自建的用戶表中查詢
????????? 如果用戶名、密碼匹配,則登錄成功)

1 #賬戶類 2 class Acct: 3 def __init__(self,acct_no,acct_name,acct_type,balance): 4 self.acct_no=acct_no 5 self.acct_name=acct_name 6 self.acct_type = acct_type 7 self.balance = balance 8 def __str__(self): 9 ret = "賬號:%s,戶名:%s,類型:%d,余額:%.2f"%(self.acct_no,self.acct_name,self.acct_type,self.balance) 10 return ret acct.py 1 #賬戶管理類(業務邏輯層) 2 #實現賬戶新增,修改,刪除等邏輯處理 3 #賬戶類,僅用于數據傳輸 4 from db_oper import * 5 from acct import * 6 class AccMange:#賬戶管理類 7 def __init__(self,db_oper): 8 self.db_oper = db_oper#數據訪問對象 9 #查詢所有莊戶信息 10 def query_all_acct(self): 11 accts =[]#返回的Acct對象列表,可能有多個對象 12 #拼裝所需要的SQL 13 sql = "select * from acct_new" 14 #執行查詢 15 result = self.db_oper.do_query(sql) 16 if not result: 17 print("查詢結果為空") 18 return None 19 #返回結果:實例化一個Acct對象列表返回 20 for r in result:#便利數據集 21 acct_no = r[0]#賬戶 22 acct_name = r[1]#姓名 23 acct_type =int(r[3])#類型 24 balance = r[6]#金額 25 accts.append(Acct(acct_no,acct_name,acct_type,balance)) 26 return accts#返回對象列表 27 #根據賬戶查詢,最多返回一個Acct對象 28 29 def query_by_id(self,acct_no): 30 sql = "select * from acct_new where acct_no = %s" % acct_no 31 result = self.db_oper.do_query(sql)#執行查詢 32 if not result: 33 print("查詢返回空對象") 34 return None 35 #提取查詢結果,實例化一個Acct對象返回 36 r = result[0]#取得第一行數據 37 acct_no = r[0]#賬號 38 acct_name = r[1]#戶名 39 acct_type = int(r[3])#類型 40 balance = r[6]#余額 41 return Acct(acct_no,acct_name,acct_type,balance) 42 43 def insert_acct(self,acct_new):#插入 44 sql = '''insert into acct_new(acct_no,acct_name,acct_type,balance)values('%s','%s',%d,%.2f)'''%(acct_new.acct_no,acct_new.acct_name,acct_new.acct_type,acct_new.balance) 45 print("\nsql:%s\n"%sql) 46 result =self.db_oper.do_update(sql) 47 print("執行結構,影響行數:%d"%result) 48 return 49 50 def update_acct(self,acct_new):#更新 51 sql="update acct set acct_type =%d,balance = %.2f where acct_no='%s'"%(acct_new.acct_type,acct_new.balance,acct_new.acct_no) 52 print("\nsql:%s\n"%sql) 53 result = self.db_oper.do_update(sql) 54 print("執行結束,影響行數:%d"%result) 55 return 56 57 def query_by_name(self,acct_name):#模糊? 58 if not acct_name: 59 print("戶名對象非法") 60 return None 61 if acct_name =="": 62 print("用戶名不能為空") 63 return None 64 65 accts =[] 66 sql = "select * from acct_new where acct_name ='%s'" % acct_name 67 68 result = self.db_oper.do_query(sql) 69 if not result: 70 print("查詢返回空對象") 71 return None 72 73 for acct_info in result: 74 acct_no = acct_info[0] 75 acct_name = acct_info[1] 76 acct_type = int(acct_info[3]) 77 balance = acct_info[6] 78 accts.append(Acct(acct_no,acct_name,acct_type,balance)) 79 return accts 80 81 if __name__=="__main__": 82 db_oper = DBOper()#實例化訪問對象 83 db_oper.open_conn()#打開數據庫連接 84 85 am = AccMange(db_oper)#實例化AcctMange對象 86 db_oper.close_conn() 87 acct_manger.py 1 #ui 2 from db_oper import * 3 from acct_manager import * 4 from acct import * 5 6 #全局變量 7 db_oper = None#打印主菜單 8 am =None 9 def print_menu():#打印主菜單 10 #根據用戶輸入,進行不同操作 11 menu = '''----------請選取要執行的操作--------- 12                  1-查詢所有              4-新增賬戶 13                  2-根據用戶查詢           5-修改賬戶 14                  3-根據用戶名查詢        6-刪除賬戶 15 ''' 16 print(menu) 17 def query_all():#查詢所有賬戶 18 accts = am.query_all_acct() 19 for a in accts: 20 print(a) 21 22 def query_by_id(): 23 acct_no = input("請輸入要查詢的賬號:") 24 if not acct_no: 25 print("輸入賬號不合法") 26 return 27 28 acct= am.query_by_id(acct_no) 29 print("\n查詢結果:") 30 print(acct)#打印賬戶信息 31 print("\n") 32 33 def query_by_name():#根據用戶名查詢 34 acct_name = input("請輸入要查詢的戶名:") 35 if not acct_name: 36 print("輸入賬號不合法") 37 return 38 39 accts =am.query_by_name(acct_name) 40 print("\n查詢結果:") 41 for acct in accts: 42 print(acct)#打印賬戶信息 43 print("\n") 44 45 def add_acct(): 46 try: 47 acct_no = input("請輸入賬號:") 48 acct_name = input("請輸入戶名:") 49 acct_type = int(input("請輸入賬戶類型(1-借記卡 2-理財卡 3-代繳代扣卡):")) 50 balance = float(input("請輸入開戶金額:")) 51 assert acct_type in [1, 2, 3] 52 assert balance >= 0.000001 53 54 new_acct =Acct(acct_no,acct_name,acct_type,balance) 55 am.insert_acct(new_acct) 56 except Exception as e: 57 print("操作錯誤") 58 print(e) 59 return 60 61 def update_acct(): 62 try: 63 acct_no = input("請輸入賬號:") 64 acct_name = input("請輸入戶名:") 65 acct_type = int(input("請輸入賬戶類型(1-借記卡 2-理財卡 3-代繳代扣卡):")) 66 balance = float(input("請輸入開戶金額:")) 67 68 assert acct_type in [1, 2, 3] 69 assert balance >= 0.000001 70 71 new_acct = Acct(acct_no,acct_name,acct_type,balance) 72 am.update_acct(new_acct) 73 except Exception as e: 74 print("操作錯誤") 75 print(e) 76 return 77 #主函數 78 def main(): 79 global db_oper 80 global am 81 db_oper = DBOper()#實例化數據訪問對象 82 db_oper.open_conn()#打開數據庫連接 83 am = AccMange(db_oper)#實例化AccMange對象 84 85 while True: 86 print_menu() 87 oper = input("請選則要執行的操作:") 88 if oper == "1": #查詢所有賬戶 89 query_all() 90 elif oper == "2": #根據賬號查詢 91 query_by_id() 92 elif oper == "3": #根據戶名查詢 93 query_by_name() 94 elif oper == "4": #新增賬戶 95 add_acct() 96 elif oper == "5": #修改賬戶 97 update_acct() 98 elif oper == "6": #刪除賬戶 99 pass 100 else: 101 break 102 db_oper.close_conn() 103 104 if __name__ == "__main__": 105 main() acct_manger_ui.py 1 #數據庫配置 2 host = 'localhost'#服務器地址 3 user = 'root'#用戶名 4 passwd = '123456'#密碼 5 dbname = 'bank'#庫名稱 db_conf.py 1 #數據庫訪問類 2 import pymysql 3 import db_conf 4 class DBOper: 5 #構造方法 6 def __init__(self): 7 self.host =db_conf.host 8 self.user =db_conf.user 9 self.passwd =db_conf.passwd 10 self.dbname =db_conf.dbname 11 self.db_conn = None#數據庫的連接對象 12 13 #連接數據庫 14 def open_conn(self): 15 try: 16 self.db_conn = pymysql.connect(self.host,self.user,self.passwd,self.dbname) 17 except Exception as e: 18 print("連接數據庫失敗") 19 print(e) 20 else: 21 print("連接數據庫成功") 22 #關閉連接 23 def close_conn(self): 24 try: 25 self.db_conn.close() 26 except Exception as e: 27 print("連接數據庫失敗") 28 print(e) 29 else: 30 print("關閉數據庫成功") 31 32 #執行查詢返回結果集 33 def do_query(self,sql): 34 if not sql:#參數合法性判斷 35 print("sql語句不合法") 36 return None 37 if sql == "":#參數合法性判斷 38 print("sql語句不合法") 39 return None 40 41 try: 42 cursor = self.db_conn.cursor()#獲取游標 43 cursor.execute(sql)#執行sql語句 44 result = cursor.fetchall()#獲取數據 45 cursor.close()#關閉游標 46 return result#返回查詢數據集 47 except Exception as e: 48 print("查詢出錯") 49 print(e) 50 return None 51 52 53 #執行增刪改等變更操作 54 def do_update(self,sql): 55 if not sql:#參數合法性判斷 56 print("sql語句不合法") 57 return None 58 if sql == "":#參數合法性判斷 59 print("sql語句不合法") 60 return None 61 62 try: 63 cursor = self.db_conn.cursor()#獲取游標 64 result = cursor.execute(sql)#執行SQL語句 65 self.db_conn.commit()#提交事物 66 cursor.close() 67 return result#返回受影響的筆數 68 except Exception as e: 69 print("執行sql語句出錯") 70 print(e) 71 return None 72 73 #測試 74 if __name__=="__main__": 75 dboper = DBOper() 76 dboper.open_conn() 77 ret = dboper.do_query("select * from acct_new") 78 for x in ret: 79 print(x) 80 81 ret = dboper.do_update("update acct_new set balance = balance + 100 where acct_no = '6223456000 '") 82 83 print(ret) 84 #查詢 85 # result = dboper.do_query("select * from acct_new") 86 # for x in result: 87 # print(x) 88 89 # dboper.close_conn()#關閉數據庫連接 90 91 #修改數據測試 92 # sql = '''update acct_new set balance = balance +1000 where acct_no ="6223456000"''' 93 # ret = dboper.do_update(sql) 94 # if not ret:#返回空對象,出錯 95 # print("執行修改錯誤") 96 # #非空對象,執行成功 97 # else: 98 # print("影響筆數:%d"% ret) 99 # dboper.close_conn()#關閉數據庫連接 100 101 102 103 db_oper.py

轉載于:https://www.cnblogs.com/shengjia/p/10385772.html

總結

以上是生活随笔為你收集整理的PYTHON1.day21的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。