Python – SQLite

Loading

測試環境為 CentOS 8 x86_64 (虛擬機)

參考範例 – https://note.charlestw.com/python-how-to-connect-sqlite/

python 可以將資料儲存在 sqlite 資料庫裡.

[root@localhost ~]# python3
Python 3.6.8 (default, Mar 25 2022, 11:15:52) 
[GCC 8.5.0 20210514 (Red Hat 8.5.0-10)] on linux
Type "help", "copyright", "credits" or "license" for more information.

匯入 sqlite3 套件.

>>> import sqlite3

透過 sqlite3.connect 連線到資料庫檔案,沒有該資料庫檔案時會自動建立在現行路徑.

>>> con = sqlite3.connect('sqlite.db')

回傳 con 為 sqlite3.Connection 物件.

透過剛剛建立的 con 物件來建立 cursoe 物件.

>>> cur = con.cursor()

之後就可以透過這個 sqlite3.Cursor 物件來執行 SQL Query.下面先來看一下基本的 SQL 語法.

  • CREATE TABLE
    使用 SQL 語法 CREATE TABLE 建立資料表(使用 IF NOT EXISTS 時該資料表不存在時才會建立).

    >>> cur.execute("CREATE TABLE IF NOT EXISTS Employee (Name CHAR(20),Dept CHAR(20),JobTitle CHAR(20))")
    <sqlite3.Cursor object at 0x7f12c257bc70>
    
  • INSERT
    使用 SQL 語法 INSERT INTO 一次插入多筆資料.

    >>> cur.execute("INSERT INTO Employee VALUES ('Ben','Testing','Engineer'), ('Afa','Power','Engineer')")
    <sqlite3.Cursor object at 0x7f12c257bc70>
    

    其他插入資料方法.

    單筆資料.

    >>> cur.execute("INSERT INTO employee VALUES ('Ben','Testing','Engineer')")
    <sqlite3.Cursor object at 0x7f12c257bc70>
    

    指定欄位.

    >>> cur.execute("INSERT INTO employee (Name , Dept) VALUES ('Afa','Power')")
    <sqlite3.Cursor object at 0x7f12c257bc70>
    

    多筆資料, 使用 cur 物件的 executemany 方法(Method).

    >>> sqldata = [('Ben','Testing','Engineer'), ('Afa','Power','Engineer')]
    >>> cur.executemany("INSERT INTO Employee VALUES(? , ? , ?)", sqldata)
    <sqlite3.Cursor object at 0x7f0d881beb20>
    
  • SELECT
    使用 SQL 語法 SELECT 讀取資料表資料.

    >>> data1=cur.execute("SELECT * FROM Employee")
    

    資料可以透過以下幾種方式來觀看.

    >>> list(data1)
    [('Ben', 'Testing', 'Engineer'), ('Afa', 'Power', 'Engineer')]
    

    fetchall method.

    >>> cur.fetchall()
    [('Ben', 'Testing', 'Engineer'), ('Afa', 'Power', 'Engineer')]
    

    或是透過 for in 迴圈.

    >>> for row in cur.execute('SELECT * FROM Employee'):
    ...     print(row)
    ... 
    ('Ben', 'Testing', 'Engineer')
    ('Afa', 'Power', 'Engineer')
    

將資料儲存到資料庫檔案.

>>> con.commit()

關閉資料庫連線.

>>> con.close()

其他 SQLite 項目

  1. 關於 SQL 基礎 INSERT , SELECT , UPDATE , DELETE
    語法請參考 – https://benjr.tw/95609
  2. SQLite 是無法建立 Function 或是 Procedure
    可以透過 python 提供 sqlite3 物件提供的 create_function 來建立相對應的 function – https://pynative.com/python-sqlite-create-or-redefine-sqlite-functions/
  3. SQLite 的 db
    可以直接透過 DB Browser for SQLite 工具來查看其資料 – https://sqlitebrowser.org/dl/
  4. REGEXP SQL Query 無法使用
    需定義 REGEXP – https://benjr.tw/104785
沒有解決問題,試試搜尋本站其他內容

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料