Python / 如何在建立 SQLite 資料庫並在 python 中執行 SQL Script

Python / 如何在建立 SQLite 資料庫並在 python 中執行 SQL Script

SQLite 雖然是一個資料庫,但它並非是一個完整的資料庫伺服器,它是以 C 語言為基礎並根據 SQL 標準開發出來的小型資料庫檔案格式,是一個開放原始碼的語言。SQLite 現在幾乎已經內建在許多跨平台的裝置上,而 sqlite3 是 Python 內建的套件,可以用以存取、執行 SQLite資料庫檔案。

▍安裝 DB Browser

▍在 Python 上連線 SQLite 資料庫並執行 SQL Script

sqlite3 是 Python 的內建套件,可以直接 import 取用。使用時先以 connect() 建立資料庫連線,並建立 cursor() 物件以呼叫 execute() 執行 SQL Script。最終記得 commit() 儲存上面執行的任何修改,並以 close() 關閉資料庫連線。

import sqlite3

# 連線到資料庫檔案
con = sqlite3.connect('sqlite.db')

# 建立cursoe物件
cur = con.cursor()

# Insert a row of data
cur.execute("""INSERT INTO table_name ('column1', 'column2', 'column3')
               VALUES ('value','string', 1234)""")

# 插入整張table
cur.execute("""INSERT INTO destination_table
               SELECT * FROM source_table""")

# Save (commit) the changes
con.commit()

# 關閉連線
con.close()

▍讀取 SELECT 結果

使用 execute() 執行 SELECT 語法會以 tuple 串列的格式回傳資料

# 呼叫execute函數執行SQL指令: Select table
result = cur.execute('SELECT * FROM table_name')
print(result) 
# [(1, 'row1', 'data1', 15.21), (2, 'row2', 'data1', 11.15), (3, 'row3', 'data1', 54.21)]

在官方的文件中的範例:

>>> for row in cur.execute('SELECT * FROM stocks ORDER BY price'):
        print(row)

('2006-01-05', 'BUY', 'RHAT', 100, 35.14)
('2006-03-28', 'BUY', 'IBM', 1000, 45.0)
('2006-04-06', 'SELL', 'IBM', 500, 53.0)
('2006-04-05', 'BUY', 'MSFT', 1000, 72.0)

▍建立 temp table

SQLite 的 temp table 預設是在 temp schema 中,使用方法和一般 table 是一樣的:

# 寫入temp table
cur.execute("""INSERT INTO temp.temp_table_name
               SELECT
                   column_name_a,
                   column_name_b
               FROM table_name;""")

# 刪除temp table
cur.execute('DROP TABLE temp.temp_table_name')

詳細語法可以參考官方文件說明:sqlite3 — DB-API 2.0 interface for SQLite databases
另外也可以參考 SQLite / 語法筆記