無論你學任何編程語言,數據庫都必須要學會,否則你的數據存在哪,總不能用手端着吧?數據庫是“按照數據結構來組織、存儲和管理數據的倉庫”,它的存儲空間很大,可以存放百萬條、千萬條、上億條數據。但是數據庫並不是隨意地將數據進行存放,是有一定的規則的,否則查詢的效率會很低。
中小型企業用得較多的是Sql Server和MySql數據庫,大型企業用得較多的是Oracle數據庫。在平時開發單機軟件時,大多數人會選擇用SQLite數據庫。
SQLite是一個無服務器、零配置的SQL 數據庫引擎,是在世界上最廣泛部署的 SQL 數據庫引擎它的源代碼不受版權限制。智能手機(Android或iPhone)本地內置支持的數據庫就是SQLite。Python內置就提供了對SQLite3數據庫操作的支持,在代碼中直接導入即可使用。
1. 創建數據庫和表
引入sqlite開發包,用connect打開(不存在就創建)數據庫文件,創建遊標cursor,執行Sql語句。
import sqlite3 # 創建一個數據庫 conn = sqlite3.connect("sales.db") # 創建遊標 cursor = conn.cursor() # 執行語句創建表的語句 createTable = "Create Table Customer(id int, name text, address text)" cursor.execute(createTable) # 關閉數據庫的鏈接 cursor.close()
輸出結果(sales.db文件內容)
2. 插入數據
可單條或批量插入數據。記得加上conn.commit()進行命令提交。
import sqlite3 # 創建一個數據庫 conn = sqlite3.connect("sales.db") # 創建遊標 cursor = conn.cursor() # 添加單條數據 data = "1,'高科技企業','青藏高原1號1路222'" cursor.execute('INSERT INTO Customer VALUES (%s)' % data) # 添加單條數據 cursor.execute("INSERT INTO Customer values(?,?,?)", (2, "高高在上科技", "黃土高坡3號3單元")) # 添加多條數據 cursor.executemany('INSERT INTO Customer VALUES (?,?,?)', [(3, "牛逼公司", "在最牛的9棟9單元上"), (4, "真的好科技無限公司", "在一個無人知道的地方")]) conn.commit() # 關閉數據庫的鏈接 cursor.close() conn.close()
輸出結果
3. 修改數據
修改單行數據時,用id指定。修改全部時,可去掉where語句。
import sqlite3 # 創建一個數據庫 conn = sqlite3.connect("sales.db") # 創建遊標 cursor = conn.cursor() # 方式一 cursor.execute("UPDATE Customer SET name=? WHERE id=?", ("吹牛皮企業", 1)) # 方式二 cursor.execute("UPDATE Customer SET name='這裏有家皮包公司' WHERE id=2") conn.commit() # 關閉數據庫的鏈接 cursor.close() conn.close()
輸出結果(第1和第2條記錄的客戶名稱name被修改了)
4. 刪除數據
用where指定刪除行的id,如果不指定,將刪除全部,這個要注意。
import sqlite3 # 創建一個數據庫 conn = sqlite3.connect("sales.db") # 創建遊標 cursor = conn.cursor() # 方式一 cursor.execute("DELETE FROM Customer WHERE id=?", (1,)) # 方式二 cursor.execute("DELETE FROM Customer WHERE id=2") conn.commit() # 關閉數據庫的鏈接 cursor.close() conn.close()
輸出結果(第1和第2條記錄被刪除了)
......