




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第8 8章章 PythonPython數據庫應用數據庫應用8.1 數據庫基礎u 數據庫(Database)數據庫是數據的集合,數據庫能將大量數據按照一定的方式組織并存儲起來,方便的進行管理和維護。u 數據庫的特征 以一定的方式組織、存儲數據能為多個用戶共享具有盡可能少的冗余代碼與程序彼此獨立8.1.1 數據庫基本概念u 數據庫管理系統(DBMS)數據庫管理系統(database management system)是一種操縱和管理數據庫的大型軟件,是用于建立、使用和維護數據庫。它對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性。它的功能包括: (1)數據定義功能。 (2)數據存取功
2、能。 (3)數據庫運行管理功能。 (4)數據庫的建立和維護功能。 (5)數據庫的傳輸。常用的數據庫管理系統有MS SQL、 SYBASE、DB2、ORACLE、MySQL等。u 數據庫系統(DBS)數據庫可分為層次型數據庫、對象型數據庫和關系型數據庫。數據庫可分為層次型數據庫、對象型數據庫和關系型數據庫。關系型數據庫是目前的主流數據庫類型。關系型數據庫不僅描關系型數據庫是目前的主流數據庫類型。關系型數據庫不僅描述數據本身,而且對數據之間的關系進行描述。述數據本身,而且對數據之間的關系進行描述。u常用術語關系:關系:可以理解為一張二維表,每一個關系都有一個關系名,也就是表名。屬性屬性: : 可以
3、理解為二維表中的一列,在數據庫中稱為字段。元組:元組:可以理解為二維表中的一行,在數據庫中稱為記錄。域:域:屬性的取值范圍,也就是數據庫中某一列的取值范圍。關鍵字:關鍵字:一組可以唯一標識元組的屬性,數據庫中稱為主鍵,可以由一個或者多個列組成。 8.1.2 關系型數據庫u關系型數據庫實體間的聯系uDB-APIDB-API是一個規范。它定義了一系列必需的對象和數據庫存取方式,以便為各種各樣的底層數據庫系統和多種多樣的數據庫接口程序提供一致的訪問接口。從Python中訪問數據庫需要接口程序,接口程序是一個Python模塊,它提供數據庫客戶端(通常是C語言編寫)的接口以供訪問,所有的Python接口
4、程序都一定程度上遵守Python DB-API規范。8.2 結構化查詢語言SQL數據庫命令和查詢操作需要通過SQL語言來執行,SQL(Structured Query Language“結構化查詢語言”)是通用的關系型數據庫操作語言??梢圆樵?、定義、操縱和控制數據庫。它是一種非過程化語言。用于創建數據庫中的表。它的語法格式為:CREATE TABLE 表名稱(列名稱1 數據類型,列名稱2 數據類型,列名稱3 數據類型,.)u例CREATE TABLE students(stuNumber varchar(12),stuName varchar(255),age integer(2),sex v
5、archar(2),score integer(4),Address varchar(255),) 8.2.1 數據表的建立(CREATE TABLE)和刪除(DROP)uCREATE TABLE uDROP用于刪除表(表的結構、屬性以及索引也會被刪除),它的語法格式為:DROP TABLE 表名稱DROP TABLE studentsu例用于從表中選取數據。結果被存儲在一個結果表中(稱為結果集)。查詢語句語法如下所示:SELECT 字段表 FROM 表名 WHERE 查詢條件 GROUP BY 分組字段 ORDER BY 字段ASC|DESCu 字段表8.2.2 查詢語句SELECT指出所查
6、詢列,它可以是一組列名、星號、表達式、變量等構成。例:查詢students表中所有列的數據。 SELECT * FROM students例:查詢表students中所有記錄的stuName, stuNumber字段內容。 SELECT stuName, stuNumber FROM studentsu WHERE子句8.2.2 查詢語句SELECTWHERE子句設置查詢條件,過濾掉不需要的數據行。WHERE子句可包括各種條件運算符(1)比較運算符:;、=、=、;、=、;、?。?、!18 AND sex=女(5)模式匹配符:LIKE、NOT LIKE例:SELECT * FROM student
7、s WHERE name like “周%”例:SELECT * FROM students WHERE score like 80-90 說明:指定一個字符、字符串或范圍,要求所匹配對象為它們中的任一個。則要求所匹配對象為指定字符以外的任一個字符。u數據分組Group By8.2.2 查詢語句SELECTGROUP BY 子句用于結合聚合函數,根據一個或多個列對結果集進行分組SELECT sex,avg(score) as 平均成績 FROM students Group By sex u例u常用的聚合函數u查詢結果排序Order By8.2.2 查詢語句SELECT使用ORDER BY子句
8、對查詢返回的結果按一列或多列排序。SELECT stuName,stuNumber FROM students ORDER BY stuSCORE DESEu例說明:ASC表示升序,為默認值,DESC為降序INSERT INTO 語句用于向表格中插入新的行。它的語法格式為:INSERT INTO 數據表 (字段1,字段2,字段3 ) VALUES (值1,值2,值3 ) u 例8.2.3 添加記錄語句INSERT INTOINSERT INTO students (stuNumber,stuName,age,sex,score,address,city) VALUES(2010005,李帆,1
9、9,男,92,Changjiang 12,Zhengzhou)或:INSERT INTO students VALUES(2010005,李帆,19,男,92,Changjiang 12,Zhengzhou)。Update 語句用于修改表中的數據。語法格式為:UPDATE 表名 SET 列名 = 新值 WHERE 列名 = 某值u 例8.2.4 更新語句UPDATEUPDATE students SET age=age+1 WHERE sex=女UPDATE students SET Address = Zhongyuanlu 41, City = Zhengzhou WHERE stuNam
10、e = 李四DELETE 語句用于刪除表中的行。它的語法格式為:DELETE FROM 表名稱 WHERE 列名 = 值u 例8.2.5 刪除記錄語句DELETEDELETE FROM students WHERE stuName = 張三說明:DELETE FROM students表示刪除表中所有記錄。8.3 SQLite數據庫簡介Python自帶一個輕量級的關系型數據庫SQLite。SQLite是一種嵌入式關系型數據庫,它的數據庫就是一個文件。8.3.1 SQLite數據庫每個存放在SQLite3數據庫中的值,都具有下表中的一種存儲類型:8.3.2 SQLite3的數據類型存儲類型存儲類
11、型說明說明NULL 空值INTEGER 帶符號整數,根據存入的數值的大小占據1,2,3,4,6或者8個字節REAL浮點數,采用8byte(即雙精度)的IEEE格式表示TEXT 字符串文本,采用數據庫的編碼(UTF-8,UTF-16BE 或者UTF- 16LE)BLOB 無類型,可用于保存二進制文件1. SQLite時間時間/日期函數日期函數:datetime():產生日期和時間date():產生日期time():產生時間 strftime():對以上三個函數產生的日期和時間進行格式化8.3.3 SQLite3的函數2. SQlite算術函數算術函數:abs(X):返回絕對值max(X,Y,.)
12、:返回最大值min(X,Y,.):返回最小值random(*):返回隨機數round(X,Y): 四舍五入3. SQLite字符串處理函數length(x) :返回字符串字符個數lower(x) :大寫轉小寫upper(x):小寫轉大寫substr(x,y,Z):截取子串like(A,B):確定給定的字符串與指定的模式是否匹配8.3.3 SQLite3的函數4.其它函數:typeof(x):返回數據的類型last_insert_rowid():返回最后插入的數據的IDPython標準模塊sqlite3使用C語言實現,提供訪問和操作數據庫SQLite的各種功能。Sqlite3模塊主要包括下列常量
13、、函數和對象:8.3.4 SQLite3的模塊Sqlite3.Version:常量,版本號。Sqlite3.Connect(database):):函數,鏈接到數據庫,返回Connect對象。Sqlite3.Connect:數據庫連接對象。Sqlite3.Cursor:游標對象。Sqlite3.Row:行對象。8.4 Python的SQLite3數據庫編程Python2.5版本以上就內置了SQLite3,所以,在Python中使用SQLite,不需要安裝任何東西,直接使用。SQLite3數據庫使用SQL語言。SQLite作為后端數據庫,可以制作有數據存儲需求的工具。Python標準庫中的SQL
14、ite3提供該數據庫的接口。Python的數據庫模塊有統一的接口標準,所以數據庫操作都有統一的模式,操作數據庫SQLite3 主要分為以下幾步:8.4.1 訪問數據庫的步驟1.導入導入Python SQLite數據庫模塊數據庫模塊 import sqlite32. 建立數據庫連接,返回建立數據庫連接,返回Connection對象對象 con = sqlite3.connect(connectstring) 例:con=sqlite3.connect(“E:test.db”)3. 創建游標對象創建游標對象 cur=con.cursor() 4. 使用使用Cursor對象的對象的execute執行
15、執行SQL命令返回結果集命令返回結果集 cur.execute(sql):執行SQL語句。 cur.execute(sql,parameters):執行代參數的SQL語句。 cur.executemany(sql,seq_of_pqrameters):根據參數執行多次SQL語句。 cur.executescript(sql_script):執行SQL腳本。 例:cur.execute(CREATE TABLE category(id primary key,sort,name)5. 獲取游標的查詢結果集獲取游標的查詢結果集 cur.fetchone():返回結果集的下一行(Row對象);無數據
16、時,返回None。 cur.fetchall():返回結果集的剩余行(Row對象列表),無數據時,返回空List。 cur.fetchmany():返回結果集的多行(Row對象列表),無數據時,返回空List。 例: print cur.fetchall() #提取查詢到的數據 也可以直接使用循環輸出結果,例如: For row in cur.execute(select * from catagory): Print(row0,row1)6. 數據庫的提交和回滾數據庫的提交和回滾 mit():事務提交 con.rollback():事務回滾 7. 關閉關閉Cursor對象和對象和Connec
17、tion對象對象 cur.close():關閉 Cursor對象 con.close():關閉Connection對象8.4.1 訪問數據庫的步驟【例8-17】:創建數據庫sales,并在其中創建表book,表中包含三列,id、price和name,其中id為主鍵(primary key)。8.4.2 創建數據庫和表#導入Python SQLite數據庫模塊import sqlite3#創建SQLite數據庫con=sqlite3.connect(E:sales.db)#創建表book:包含三個列,id(主鍵)、price和namecon.execute(create table book(i
18、d primary key,price,name))說明:connection對象的execute方法是Cursor對象對應方法的快捷方式,系統會創建一個臨時Cursor對象,然后調用對應的方法,并返回Cursor對象。在數據庫表中插入、更新、刪除記錄的一般步驟為:1.建立數據庫連接;2.創建游標對象cur,使用cur.execute(sql)執行SQL的insert、Update、delete等語句完成數據庫記錄的插入、更新、刪除操作,并根據返回值判斷操作結果;3.提交操作;4.關閉數據庫。8.4.3 數據庫的插入、更新和刪除操作import sqlite3books=(021,25,大學計
19、算機),(022,30, 大學英語),(023,18, 藝術欣賞 ) ,( 024,35, 高級語言程序設計)#打開數據庫Con=sqlite3.connect(E:sales.db)#創建游標對象Cur=Con.cursor()#插入一行數據Cur.execute(insert into book(id,price,name) values (001,33,大學計算機多媒體)Cur.execute(insert into book(id,price,name) values (?,?,?) ,(002,28,數據庫基礎)8.4.3 數據庫的插入、更新和刪除操作#插入多行數據Cur.executeman
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 4人合伙協議合同協議
- 專利提成合同協議
- 三方協議簽字公司合同
- 香港員工雇傭合同協議
- 店面定金合同協議模板
- j嘉善勞動合同協議
- 合同禁止談戀愛協議
- app開發運營合同協議
- 2003版勞動合同協議
- 建筑物拆遷合同協議
- 醫院護理培訓課件:《安全注射》
- 2024年415全民國家安全教育日知識競賽及答案
- 再生資源消防安全培訓
- 高考地理二輪復習課件專題3S技術
- 安全生產治本攻堅三年行動主要任務
- 2024年濟南城市發展集團投資開發有限公司招聘筆試參考題庫含答案解析
- 2024年贛州市章貢區文化旅游發展集團有限公司招聘筆試參考題庫附帶答案詳解
- 同等學力申碩-同等學力(政治學)筆試(2018-2023年)真題摘選含答案
- 親子鑒定報告樣本
- 六年級下冊數學應用題練習100題及答案
- 我不能亂起外號課件
評論
0/150
提交評論