Python 如何操作 SQLite 資料庫
寫在之前
SQLite 是一個小型的關係型資料庫,它最大的特點在於不需要單獨的服務、零配置。我們在之前講過的兩個資料庫,不管是 MySQL 還是 MongoDB,都需要我們安裝。安裝之後,然後執行起來,其實這就相當於已經有一個相應的服務在跑著。
SQLite 與前面所說的兩個資料庫不同。首先Python 已經將相應的驅動模組作為了標準庫的一部分,只要是你安裝了 Python,就可以使用;再者它可以類似於操作檔案那樣來操作 SQLite 資料庫檔案。還有一點,SQLite 原始碼不受版權限制。
建立連線
SQLite 也是一個關係型資料庫,所以 SQL 可以直接在裡面使用。由於 SQLite 的驅動已經在 Python 裡面了,所以只要引用就可以直接使用,由於我們之前已經講過 MySQL 了,所以對於本次內容理解起來就容易多了。
>>> import sqlite3 >>> conn = sqlite3.connect('lite.db')
由上面的程式碼我們得到了連線物件,是不是覺得比 MySQL 連線要簡單很多呢?在 sqlite3.connect('lite.db') 中,如果已經有了那個資料庫,就直接連線它,如果沒有的話,就會自動建一個。需要注意的是,這裡的路徑是可以隨意指定的。
下面的程式碼顯示的是連線物件的屬性和方法:
>>> dir(conn) ['DataError','DatabaseError','Error','IntegrityError','InterfaceError','InternalError','NotSupportedError','OperationalError','ProgrammingError','Warning','__call__','__class__','__delattr__','__dir__','__doc__','__enter__','__eq__','__exit__','__format__','__ge__','__getattribute__','__gt__','__hash__','__init__','__init_subclass__','__le__','__lt__','__ne__','__new__','__reduce__','__reduce_ex__','__repr__','__setattr__','__sizeof__','__str__','__subclasshook__','close','commit','create_aggregate','create_collation','create_function','cursor','execute','executemany','executescript','in_transaction','interrupt','isolation_level','iterdump','rollback','row_factory','set_authorizer','set_progress_handler','set_trace_callback','text_factory','total_changes']
建立遊標
這一步其實跟 MySQL 也很類似,連線了資料庫之後,要建立遊標物件:
>>> cur = conn.cursor()
接下來就是對資料庫內容的操作,都是用遊標物件方法來實現:
>>> dir(cur) ['__class__','__iter__','__next__','arraysize','connection','description','fetchall','fetchmany','fetchone','lastrowid','rowcount','setinputsizes','setoutputsize']
我們在裡面看到了一系列我們熟悉的名稱:close()、execute()、fetchall() 等。
1.建立資料庫表
面對 SQLite 資料庫,我們之前熟悉的 SQL 指令都可以用:
>>> create_table = "create table books (title,author,language)" >>> cur.execute(create_table) <sqlite3.Cursor object at 0x104f296c0>
這樣就在資料庫 lite.db 中建立了一個表 books。對這個表可以增加資料:
>>> cur.execute('insert into books values("python basic","rocky","python")') <sqlite3.Cursor object at 0x104f296c0>
為了保證資料能夠儲存,還要進行如下操作:
>>> conn.commit() >>> cur.close() >>> conn.close()
以上,在剛才建立的資料庫中已經有了一個表 books,表中已經有了一條記錄。
2.查詢
儲存以後我們來查詢一下:
>>> conn = sqlite3.connect('lite.db') >>> cur = conn.cursor() >>> cur.execute('select * from books') <sqlite3.Cursor object at 0x104f297a0> >>> cur.fetchall() [('python basic','rocky','python')]
3.批量插入
我們來給 books 表中多增加一些內容,以便於我們進行其它的操作:
>>> books = [("first book","first","c"),("second book","second","c++"),("third book","third","java")]
這次我們來一個批量插入:
>>> cur.executemany('insert into books values (?,?,?)',books) <sqlite3.Cursor object at 0x104f297a0> >>> conn.commit()
接下來我們用迴圈語句來列印一下查詢結果:
>>> rows = cur.execute('select * from books') >>> for row in rows: ... print(row) ... ('python basic','python') ('first book','first','c') ('second book','second','c++') ('third book','third','java')
4.更新
正如我們前面所說的,在 cur.execute() 中,可以寫 SQL 語句來操作資料庫:
>>> cur.execute("update books set title='physics' where author='first'") <sqlite3.Cursor object at 0x104f297a0> >>> conn.commit()
接下來我們按照條件查詢來看一看:
>>> cur.execute("select * from books where author='first'") <sqlite3.Cursor object at 0x104f297a0> >>> cur.fetchall() [('physics','c')]
5.刪除
刪除也是操作資料庫必須的動作:
>>> cur.execute("select * from books") <sqlite3.Cursor object at 0x104f297a0> >>> cur.fetchall() [('python basic','python'),('physics','c'),('third book','java')]
最後不要忘記在完成對資料庫的操作以後,一定記得給人家「關上門」:
>>> cur.close() >>> conn.close()
寫在之後
基本的知識差不多就是這些,當然肯定不侷限於此。在實際的程式設計中我們肯定會遇到很多的問題,大家記得要多多去查閱官方文件,學會解決問題。
至此,Python 操作資料這一部分就結束了,其實不光是這一個章節的結束,我計劃裡面的整個「零基礎入門學習 Python」這個系列也到此結束了,後續隨著我碰到的知識的增加,還會再給大家更新關於 Python 方面的東西,讓我們一起加油。
如果你覺得本篇文章對你有所幫助的話,歡迎點贊 + 關注,期待和你的交流。
The end。
以上就是Python 如何操作 SQLite 資料庫的詳細內容,更多關於python操作 SQLite 資料庫的資料請關注我們其它相關文章!