使用sqlite3 模組操作sqlite3資料庫

weixin_34290000發表於2017-04-02

Python內建了sqlite3模組,可以操作流行的嵌入式資料庫sqlite3。如果看了我前面的使用 pymysql 操作MySQL資料庫這篇文章就更簡單了。因為它們都遵循PEP 249,所以操作方法幾乎相同。

廢話就不多說了,直接看程式碼吧。程式碼都差不多,首先匯入模組,然後建立連線,然後獲取遊標物件,之後利用遊標物件執行SQL語句並獲取結果。由於SQL引數需要以元組形式傳入,所以下面的程式碼你會看到('name',)這樣的,這是一個元素的元組形式。

import sqlite3

db_file = 'test.db'

create_table_sql = '''\
CREATE TABLE test(
name VARCHAR(255) PRIMARY KEY ,
value VARCHAR(255) NOT NULL 
)
'''

insert_table_sql = """\
INSERT INTO test VALUES(?,?)  
"""

query_table_sql = """\
SELECT *
FROM test WHERE `name`=?
"""

delete_table_sql = """\
DROP TABLE test
"""

print('--------------sqlite3--------------')
print(f'version:{sqlite3.version}')
print(f'sqlite_version:{sqlite3.sqlite_version}')

with sqlite3.connect(db_file) as connection:
    try:
        cursor = connection.cursor()
        cursor.execute(create_table_sql)

        cursor.execute(insert_table_sql, ('name', 'yitian'))
        cursor.execute(insert_table_sql, ('count', '100'))

        cursor.execute(query_table_sql, ('name',))
        name = cursor.fetchone()
        print(name)
        cursor.execute(query_table_sql, ('count',))
        count = cursor.fetchone()
        print(count)

        cursor.execute(delete_table_sql)

    finally:
        cursor.close()

下面說說sqlitePyMySQL模組之間的不同點吧。首先sqlite3是一個嵌入式資料庫,所以資料庫檔案就是一個db檔案,在上面的程式碼中,如果第一次執行就會發現在當前資料夾下多了一個test.db檔案,這就是嵌入式資料庫檔案。如果我們把資料儲存到記憶體中,程式結束後就消失,那麼使用:memory:作為資料庫名稱。

另一個不同點就是SQL引數的佔位符了,sqlite3的佔位符是?,而PyMySQL的佔位符是%s。在使用的時候需要確定具體的資料庫文件,檢視它的佔位符到底是什麼。

相關文章