資料庫的基本操作,無非就是下面7招:
創建
讀取
插入
更新
查詢
排序
洗掉
我們先要引入sqlite3這個模塊,這個模塊是Python自帶的,不需要安裝(上一篇我寫錯了,好多好心的小伙伴提醒我,非常感謝糾正),然后創建資料庫很簡單,我們假設我們要把下面一個“工資單”表格資料存入資料庫,如何操作呢,下面一步一步來操作,follow me !

## 1.創建資料庫
sqlite3.connect(database [,timeout ,other optional arguments])
**1).這個函式主要是打開一個到SQLite資料庫檔案的鏈接**
若成功回傳一個物件,如果給定的資料庫名稱不存在,則該呼叫將創建一個資料庫,如果我不想在當前目錄中創建資料庫,那么你可以指定一個路徑即可.
**2).資料庫好了,我們要建表**
資料庫其實就是一個一個表,然后維護這些表之間的愛和情仇,如何建表呢,簡單,用SQL陳述句建表,SQL陳述句還是很通俗易懂的:

**首先創建一個table名字叫USERS,如果不存在就創建它:**
然后這個表有6列,每一個分別是:
ID#為主key,就是唯一標識表中某一條記錄,不能重復,類似身份證
NAME#型別是TEXT,也就是字串,是可變長度的字串
AGE#型別是INT,也就是整型
SEX#型別是字串,固定長度為10個位元組,不管用不用都分配10個位元組
CITY#型別是字串,固定長度為30個位元組,不管用不用都分配30個位元組
SALARY#型別是浮點數
**接著插入資料:**
INSERT INTO USERS (ID,NAME,AGE,SEX,CITY,SALARY) VALUES(1,'Leo',32,'Male','ShangHai',12000)
也是一個SQL陳述句,和前面的key要對應,按順序寫入我們的表格內容
**然后提交commit:**
connection.commit()
辛苦寫了半天,要提交當前的事務,如果忘記了,對不起那么你所做的任何動作對資料庫連接來說是不可見的
**最后關閉資料庫**
connection.close(),千萬不要忘記關閉

## 2.讀取資料庫
創建好了資料庫之后,我們要讀一下,讀資料就簡單多了,我們用**SELECT陳述句**
*SQLite 的 SELECT 陳述句,可以方便從 SQLite 資料庫表中獲取資料,以結果表的形式回傳資料,這些結果表也被稱為結果集,然后我們列印出這個結果集里面的每一行資料.*

select * from USERS 查詢表里面的所有資料,回傳給一個游標cursor
回圈列印出每一行的資料
## 3.插入資料庫
如果我們要添加一行新的內容到資料庫中怎么辦,用INSERT陳述句
conn.execute("INSERT INTO USERS (ID,NAME,AGE,SEX,CITY,SALARY) VALUES (10,'Lily',30,'Female','GuangZhou', 13000)");
比如我們增加一個姑娘的工資到資料庫中,就要依此把每一列的內容寫入表中
切記:確保值的順序與列在表中的順序一致

## 4.更新資料庫
資料庫經常要更新,比如ID=10 的Lily同學工資猛漲了,幫她更新一下資料庫吧,我們用Update 陳述句.
conn.execute("UPDATE USERS set SALARY =30000.00 WHERE ID=10");
*SQLite 的 UPDATE 查詢用于修改表中的記錄,一般都是配合使用帶有 WHERE 子句的 UPDATE 查詢然后指定的那一行,這里我們是要更新ID=10,要不然你會把所有人的工資都更新了,那老板就哭了~~*

## 5.查詢資料庫
資料庫搞好了,我們是要查詢是必須呢,怎么查詢呢,我們用Select 陳述句
跟前面的讀資料有點類似,只是上面是全盤讀取,我們這邊是按照某一個條件讀取.
比如我們要查表,年齡大于30歲,并且工資在10000以上的同學
cursor = conn.execute("SELECT AGE,SALARY from USERS "
"WHERE AGE>30 and SALARY >=10000")
用一個復合的邏輯判斷一下就搞定了,是不是象英語一樣表訴,SQL語言還是很簡潔的

## 6.排序資料庫
資料庫的排序也是經常要用的,我們要按照某一些規則來排序,比如按照工資排序,比如按照年齡排序,怎么排呢,用**ORDER BY陳述句**
*SQLite 里的 ORDER BY 子句是用來按照一個或多個列按升序或降序來排列*
比如按工資排序:
conn.execute("SELECT id, name, CITY, salary from USERS ORDER BY salary DESC ")

>>
(10, u'Lily', u'GuangZhou', 30000.0)
(2, u'Jack', u'BeiJing', 15000.0)
(1, u'Leo', u'ShangHai', 12000.0)
(4, u'Martin', u'NanJing', 9500.0)
(3, u'Lulu', u'ChengDu', 8000.0)
## 7.洗掉資料庫
上面說了6種,還差一種經常會用的操作,就是洗掉資料庫里面的內容,前面一開始就就用了一招洗掉整個表,如果想洗掉一個表里面的一行怎么操作呢,用Delete陳述句
*SQLite 的 DELETE 查詢用于洗掉表中已有的記錄,一般也是用帶有 WHERE 子句的 DELETE 查詢來洗掉選定行,否則所有的記錄都會被洗掉,*
比如我們洗掉ID=2同學的記錄:
conn.execute("DELETE from USERS where ID=2")
切記要conn.commit()

結論:
好了,SQLite資料庫的入門操作就講道這里了,是不是很簡單啊,其實很多復雜的東西都是一層一層抽絲剝繭的去理解,會輕松很多,如果大家對今天的內容有什么疑問,歡迎留言一起討論,
推薦一下我建的python學習交流扣扣qun:850973621,群里有免費的視頻教程,開發工具、
電子書籍、專案原始碼分享,一起交流學習,一起進步!



作者:菜鳥學python
鏈接:https://www.jianshu.com/p/643295e217b6
來源:簡書
著作權歸作者所有,商業轉載請聯系作者獲得授權,非商業轉載請注明出處,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/232880.html
標籤:Python
