版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學院 系部名稱主講:授課教師 姓名Python 基礎教程第 10章 MySQL 數據庫操作Python 標準數據庫接口為 Python DB-API,Python DB-API 為開發(fā)人員提供了數據庫應用 編程接口。 Python 數據庫接口支持非常多的數據庫,選擇適合項目的數據庫: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server Informix Interbase Oracle Sybase 第 10章 MySQL 數據庫操作可以訪問 Python 數據庫接口及 API 查看詳細的支持數據庫列表。 不同的數據庫需要下載不同的 DB API
2、 模塊,例如需要訪問 MySQL 數據,需要下載 MySQL 數據庫模塊。 本章以流行的開源 MySQL 數據庫為例,介紹 Python 操作 MySQL 數據庫的過程及方式。 第 10章 MySQL 數據庫操作【教學導航】學習目標1了解 MySQL 數據庫的使用 2掌握 MySQL 數據庫的連接 3了解并掌握 MySQL 數據庫的操作 4了解 MySQL 數據庫的錯誤處理 教學重點1掌握 MySQL 數據庫的連接 2了解并掌握 MySQL 數據庫的操作 教學方式案例教學法、分組討論法、自主學習法、探究式訓練法 課時建議4課時本章主要內容實訓 10訪問 MySQL 數據庫 數據庫操作 1231
3、0.1 訪問MySQL 數據庫 數據可以存儲在文件中,但如果數據復雜,就需要對數據進行格式化操作,否則難以識 別。數據庫是專門用來存儲數據的系統,能存儲復雜的數據。本節(jié)的目標是熟悉 Python 連接 MySQL 數據庫的模塊、過程、對象及方法,使程序能實現數據的連接。 學習目標1了解并掌握 pymysql 模塊安裝 2了解 Python 操作數據庫的過程 3了解 Connection 對象并掌握其操作 4了解 Cursor 對象并掌握其操作 5了解事務及使用 6掌握 Python 連接 MySQL 數據庫的操作過程 10.1.1 pymysql 模塊安裝 MySQL 是目前流行的的關系型數據
4、庫管理系統之一,在 Web 中應用廣泛。 MySQL 所使用的 SQL語言是用于訪問數據庫的最常用的標準化語言。MySQL 軟件采用 雙授權政策,分為社區(qū)版和商業(yè)版。因其體積小、速度快、成本低且開放源碼,所以一般中 小網站的開發(fā)都選擇 MySQL 作為網站數據庫。 Python 沒有自帶對 MySQL 的支持,必須另外安裝。安裝方式和其他第三方庫一樣,進 入 Python 的安裝目錄的 Scripts 子目錄,執(zhí)行 pip 安裝命令:pip install pymysql 安裝成功pymysql的驅動,就可以使用import pymysql引入這個模塊驅動MySQL數據庫。10.1.2 事務機
5、制 事務是數據庫理論中一個比較重要的概念,指訪問和更新數據庫的一個程序執(zhí)行單元, 事務具有 4 個屬性:原子性、一致性、隔離性、持久性。這 4 個屬性通常稱為 ACID 特性。 原子性(Atomic):一個事務是一個不可分割的工作單位,事務中的各項操作要么全都做, 要么全都不做,任何一項操作的失敗都會導致整個事務的失敗。 一致性(Consistent):事務必須使數據庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。一致 性與原子性是密切相關的。 隔離性(Isolated):并發(fā)執(zhí)行的事務彼此無法看到對方的中間狀態(tài),一個事務的執(zhí)行不能 被其他事務干擾。10.1.2 事務機制 持久性(Durable):持
6、續(xù)性也稱永久性(Permanence),指一個事務一旦提交,它對數據 庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響??梢?通過日志和同步備份在故障發(fā)生后重建數據。 事務機制可以確保數據一致性。Python DB API 2.0 的事務提供了兩個方法 commit 或 rollback。正常結束事務:mit( )。 異常結束事務:conn.rollback( )。10.1.2 事務機制對于支持事務的數據庫,在 Python 數據庫編程中,當游標建立之時,就自動開始了一個 隱形的數據庫事務。commit( )方法是提交所有更新操作,Python 操作 MySQL 是用
7、事務的方式來實現的,在 update 時必須有 commit 提交的過程,否則數據表不會更新。rollback( )方法回滾當前游標的所有操作。每一個方法都開始了一個新的事務。 在開發(fā)時,還可以使用以下事務,即關閉自動 commit:設置 conn.autocommit(False)。10.1.3 Python 操作數據庫過程及對象 Python 操作數據庫的過程依次如下: 首先創(chuàng)建 Connection 對象(數據庫連接對象)用于打開數據庫連接,再創(chuàng)建 Cursor 對象(游標對象)用于執(zhí)行查詢和獲取結果。 然后執(zhí)行 SQL 語句對數據庫進行增、刪、改、查等操作并提交事務,此過程如果出現 異
8、常則使用回滾技術使數據庫恢復到執(zhí)行 SQL 語句之前的狀態(tài)。 最后,依次銷毀 Cursor 對象和 Connection 對象。10.1.3 Python 操作數據庫過程及對象 1Connection 對象 Connection 對象即為數據庫連接對象,在 Python 中可以使用 pymysql.connect( )方法創(chuàng)建 Connection 對象,格式如下:pymysql.connect(host=主機名(IP),port=端口號,user=用戶名,passwd=密碼,db=數據庫名 ,chartset=字符集)connect( )方法的常用參數如下。host:連接的數據庫服務器主機名
9、,默認為本地主機(localhost),字符串類型。 port:指定數據庫服務器的連接端口,默認為 3306,整型。10.1.3 Python 操作數據庫過程及對象user:用戶名,默認為當前用戶,字符串類型passwd:密碼,無默認值,字符串類型。 db:數據庫名稱,無默認值,字符串類型。chartset:字符集,無默認值,字符串類型。Connection 對象常用的cursor( ):使用當前連接創(chuàng)建并返回游標。 commit( ):提交當前事務。 rollback( ):回滾當前事務。 close( ):關閉當前連接。方法如下。10.1.3 Python 操作數據庫過程及對象2Curso
10、r 對象Cursor 對象即為游標對象,用于執(zhí)行查詢和獲取結果,在 Python 中可以使用 conn.cursor( ) 創(chuàng)建,conn 為 Connection 對象。Cursor 對象常用的方法和屬性如下。execute( ):執(zhí)行數據庫查詢或命令,將結果從數據庫獲取到客戶端。 fetchone( ):獲取結果集的下一行。fetchmany( ):獲取結果集的下幾行。 fetchall( ):獲取結果集中剩下的所有行。 close( ):關閉當前游標對象。 rowcount:最近一次的 execute 返回數據的行數或受影響的行數。10.2 數據庫操作數據庫的操作,主要是對數據庫的讀取與
11、更新。連接數據庫后,進行數據的增、刪、改、 查操作。本節(jié)的目標就是掌握對數據庫訪問及數據表的增、刪、改、查這些基本操作。學習目標1掌握 MySQL 數據庫的連接 2掌握數據庫表的創(chuàng)建3掌握數據的讀寫操作,能熟練進行數據的增、刪、改、查 10.2.1 連接 MySQL 數據庫連接數據庫前,請先確認以下事項: 已經創(chuàng)建了數據庫 TEST。 在 TEST 數據庫中已經創(chuàng)建了表 EMPLOYEE。 EMPLOYEE 表字段為 userName,age,sex 和 tel。 連接數據庫 TEST 使用的用戶名為“root”,密碼為“root” ,可以自己設定或者直接使 用 root 用戶名及其密碼,My
12、SQL 數據庫用戶授權請使用 grant 命令。Python 連接 MySQL 數據庫的方法如下:conn=pymysql.connect(host=,port=3306,user=root,passwd=root,db=TEST,chartset=utf8)10.2.1 連接 MySQL 數據庫 其中,connect 是 pymysql 的連接函數,連接的數據庫位于服務器 host 上,一般用 IP 地址或 服務器名稱連接。 代表本機的 IP 地址,表示本機 MySQL 數據庫。port 表示端口號, MySQL 默認端口號是 3306。user、passwd 是 MySQL 的一個用戶的用
13、戶名和密碼(注:本教 材所用 MySQL 用戶名與密碼均采用 root)。 db 是用來表示 MySQL 數據庫的名稱。chartset 表示文本采用 UTF-8 編碼。 上述方法也可以簡寫為 pymysql.connect(localhost,rootroot,TEST)形式10.2.1 連接 MySQL 數據庫test 數據庫連接代碼如例 10-2-1 所示。 例 10-2-1 Python 連接 MySQL 的 test 數據庫實例 1。上例中,連接數據庫同時使用了參數名和參數值,可以簡化這個寫法,如例 10-2-2 所示。 例 10-2-2 Python 連接 MySQL 的 test
14、 數據庫實例 2。10.2.2 創(chuàng)建數據庫表如果數據庫連接存在,我們可以使用 execute( )方法來為數據庫創(chuàng)建表,如例 10-2-3 所示 創(chuàng)建表 employee。 conn=pymysql.connect(host=,port=3306,user=root, passwd=root, db=test, charset=utf8)代碼中,如果需要使用中文,需要添加“charset=utf8”,否則中文會輸出亂碼10.2.3 數據庫讀寫 數據庫的讀寫,最基本的操作就是增、刪、改、查。以下結合實例,介紹 MySQL 數據 庫的增、刪、改、查操作。1插入數據插入數據庫,主要是使用 INSER
15、T 語句,如向表 EMPLOYEE 插入記錄。操作如例 10-2-4 所示。例 10-2-4 直接使用 SQL語句插入記錄10.2.3 數據庫讀寫以上例子是采用 SQL 語句直接傳值,用戶的信息通過鍵盤等途徑輸入,SQL 語句中通過 相關變量接收數值,也就是可以進行數據庫傳參。數據傳參可以寫成如下形式: cursor.execute(sql,(參數列表)在 SQL 語句中,需要使用占位符進行占位。MySQL 數據庫參數統一用“%s”表示,表 示此處是不確定的值,具體需要使用參數表示。例如,在例 10-2-2 中,SQL語句使用占位符 輸出,參考如下:sql = INSERT INTO EMPL
16、OYEE(userName, age, sex, tel) VALUES (%s, %s, %s, %s)“數據傳參 cursor.execute(sql, (參數列表)中的參數列表,是對應參數的具體值,此參數放 在一個元組中或列表中。參考如下:cursor.execute(sql,(變量 1,變量 2,變量 3,變量 4)10.2.3 數據庫讀寫 變量 1 到變量 4 分別對應 SQL 語句中的 userName、age、sex、tel,也就是分別對應 EMPLOYEE 表的 4 個字段。例 10-2-4 中的代碼可以改寫為例 10-2-5 所示代碼。例 10-2-5 使用數據傳參插入記錄。
17、10.2.3 數據庫讀寫 2查詢數據根據10.1節(jié)的描述,Python查詢MySQL使用fetchone( )方法獲取單條數據,使用fetchall( ) 方法獲取多條數據。其中 fetchone( ):該方法獲取下一個查詢結果集。結果集是一個對象。 fetchall( ):接收全部的返回結果行。 rowcount:這是一個只讀屬性,并返回執(zhí)行 execute( )方法后所影響的行數。 如要讀取表的全部記錄,使用游標的 fetchall( )方法,操作實例如例 10-2-6 所示。10.2.3 數據庫讀寫例 10-2-6 查詢表中所有數據實例。 以上實例可以修改相應人員的年齡和性別。10.2.
18、3 數據庫讀寫 4刪除數據 刪除操作用于刪除數據表的數據、SQL語句中的占位符和數據傳參,與例 10-2-5 含義相 同,操作實例如 10-2-8 所示。 例 10-2-8 刪除記錄操作實例。 10.2.3 數據庫讀寫 5錯誤處理 在數據庫操作中,經常會出現操作錯誤和異常,DB API 中定義了一些數據庫操作的錯誤 及異常,這些錯誤和異常匹配如表 10-2-1 所示。 表 10-2-1 數據庫操作的錯誤及異常一覽表 異常 描述 Warning當有嚴重警告時觸發(fā),例如,插入數據時被截斷等,必須是 StandardError 的子類 Error警告以外所有其他錯誤類。必須是 StandardErr
19、or 的子類 InterfaceError當有數據庫接口模塊本身的錯誤(而不是數據庫的錯誤)發(fā)生時觸發(fā),必須是 Error 的子類 DatabaseError和數據庫有關的錯誤發(fā)生時觸發(fā),必須是 Error 的子類 DataError當數據處理發(fā)生錯誤時觸發(fā),例如,除零錯誤,數據超范圍等,必須是 DatabaseError 的子類 10.2.3 數據庫讀寫 續(xù)表 10-2-1 數據庫操作的錯誤及異常一覽表 異常 描述 OperationalError 指非用戶控制的,在操作數據庫時發(fā)生的錯誤。例如,連接意外斷開、數據庫名未找 到、事務處理失敗、內存分配錯誤等操作數據庫時發(fā)生的錯誤,必須是 DatabaseError 的子類 IntegrityError與完整性相關的錯誤,例如外鍵檢查失敗等,必須是 DatabaseError 子類 InternalError數據庫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年高中物理同步測練8歐姆定律含解析教科版選修3-1
- 玉溪師范學院《地理教學論》2022-2023學年第一學期期末試卷
- 鹽城師范學院《中學基礎教育研究專題》2023-2024學年第一學期期末試卷
- 2024年機械五金塑料件項目合作計劃書
- 2024個人土地承包合同范本大全
- 廣西梧州柳州2024年高三下學期第二次診斷性測試數學試題
- 廣西南寧市二中2024年高三5月考數學試題
- 2024裝修合同中的關鍵詞
- 鹽城師范學院《藝術概論》2022-2023學年第一學期期末試卷
- 鹽城師范學院《唐宋詩詞鑒賞》2023-2024學年第一學期期末試卷
- 中藥項目投資合同范例
- 2024年秋新人教版7年級上冊語文教學課件 第5單元19《大雁歸來》
- 2024-2025學年上海市普陀區(qū)八年級(上)期中數學試卷
- 假期補課協議書
- 電子商務支付結算系統開發(fā)合同
- 服務質量、保證措施
- 2024年部編版九年級語文上冊電子課本(高清版)
- (必練)廣東省軍隊文職(經濟學)近年考試真題試題庫(含答案)
- 含羞草天氣課件
- 2024年安全生產知識競賽考試題庫及答案(共五套)
- 22《鳥的天堂》課件
評論
0/150
提交評論