在昨日的內容之中我們將既有的user做一個重構,並且將跟使用者相關的函式抽離到UserModel之中,但是目前的內容只要伺服器重新開機之後原來新增的資料就會消失,所以今天教授大家如何透過sqlite將資料存在檔案中,透過這動作我們可以把資料保留下來。
本文章同步放置於此
安裝這動作已經做過很多次了,相信讀者也可以完成此動作,若是有遇到問題的就看一下下列得指令了:
pip install sqlite3
透過上述指令可以安裝sqlite3這個函式庫,接下來告訴大家一些sqlite的方法。
這部分透過實作教授大家一些sqlite的方法,所以分成以下幾種方式來教授大家如何使用sqlite:
在所有動作之前首先是要先連結資料庫,在sqlite簡單講就是連結哪個檔案,所以指令很簡單,這部分先看一下下列內容:
import sqlite3
conn = sqlite3.connect('user.db')
透過sqlite3.connect(檔案名稱),如此就可以用資料庫的方式存取user.db這個檔案。接下來除了sqlite的api還會帶一些SQL語法。
其實sqlite的指令還算簡單,因為只要讀者會SQL語法就方便許多,然而這30天主要是教授大家如何使用flask-restful所以不去帶太多SQL語法,所以這邊就簡單帶個幾種語法,首先是建立Table的語法。
cursor = conn.cursor()
cursor.execute('DROP TABLE IF EXISTS users')
cursor.execute('CREATE TABLE IF NOT EXISTS users('
'id INTEGER PRIMARY KEY, '
'name TEXT, '
'email TEXT, '
'password TEXT)')
conn.commit()
conn.close()
如此及建立了一個名為user的table,裡面有幾個欄位分別為id、name、email以及password,如此我們的資料庫建立完成了。
相信在看過CREATE TABLE之後很多讀者們就已經開始新增資料或刪除資料了,因為sqlite的語法初步就是以下幾種:
conn = sqlite3.connect('user.db')
cursor = conn.cursor()
cursor.execute(SQL COMMAND)
conn.commit()
conn.close()
簡單說明一下就是以下得循環:
在上述說明了如何執行指令,但是如果我們要新增多筆資料要如何執行呢,接下來就請大家看看以下例子:
conn = sqlite3.connect('user.db')
cursor = conn.cursor()
insert_query = 'INSERT INTO users VALUES(?, ?, ?, ?)'
users = []
users.append((None, 'kirai', 'abc.def@gmail.com', '123456'))
users.append((None, 'kirai1', 'abc1.def@gmail.com', '123456'))
users.append((None, 'kirai2', 'abc2.def@gmail.com', '123456'))
cursor.executemany(insert_query, users)
conn.commit()
conn.close()
如此我們將可以新增三筆使用者資料進到資料庫內。
在教授完如何新增資料到資料庫內,接下來就要告訴大家如何重資料庫提取資料出來,範例請看下列內容:
for row in cursor.execute(SELECT * FROM users):
print(row)
conn.commit()
conn.close()
其中row代表query出來每一列所含資料,這裡就可以提取row裡面的資料轉換為UserModel並返回給客戶端。
今日的內容教授大家了解sqlite的基本語法,其實其他資料庫如mysql,postgresql亦是同樣的道理所以筆者就不一一贅述,待有興趣的讀者自行發掘,接下來就介紹如何整合我們的應用程序與sqlite將現有的資料存放於資料庫內並提取出來使用,敬請期待。