寫在之前
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__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'arraysize', 'close', 'connection', 'description', 'execute', 'executemany', 'executescript', 'fetchall', 'fetchmany', 'fetchone', 'lastrowid', 'row_factory', '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(www.feifanyule.cn/)
>>> 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 www.mingcheng178.com* from books')
>>> for row in rows:
... print(row)
...
('python basic', 'rocky', 'python')
('first book', 'first', 'c')
('second book', www.mhylpt.com/'second', 'c++')
('third book', 'third',www.yigouyule2.cn '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', 'first', 'c')]
5.刪除
刪除也是操作數據庫必須的動作:
>>> cur.execute("www.gcyL157.com select * from books")
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall(www.michenggw.com)
[('python basic', 'rocky', 'python'), ('physics', 'first', 'c'), ('third book', 'third', 'java')]
最後不要忘記在完成對數據庫的操作以後,一定記得給人家「關上門」:
>>> cur.close()
>>> conn.close()
寫在之後
基本的知識差不多就是這些,當然肯定不侷限於此。在實際的編程中我們肯定會遇到很多的問題,大家記得要多多去查閱官方文檔,學會解決問題。
Python 操作 SQLite 數據庫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
我是怎麼從 Excel 表哥轉到 Python 的
蘇克1900
2019-02-24 14:16:50
Python正則表達式
蒼簡
2019-02-24 13:54:12
23個Python爬蟲開源項目代碼:爬取微信、淘寶、豆瓣、知乎、微博等
蒼簡
2019-02-24 13:54:12
5/20python之列表
王悟冥
2019-02-24 13:47:51
Mac OS 上安裝PyCharm專業版並破解註冊
Hansion
2019-02-24 13:12:51
python萌新:從零基礎入門到放棄
編程黑格爾
2019-02-24 13:06:36
519. leetcode題目講解(Python):隨機翻轉矩陣(Random Flip Matrix )
夏山聞汐
2019-02-24 12:59:06
《Flask Web開發:基於Python的Web應用開發實戰》筆記二、
mbb97
2019-02-23 13:43:04
ftrack Python API
wx5c6a499ea4601
2019-02-23 13:40:57
Python帶權重隨機數的簡單實現
vincent_tech
2019-02-23 13:37:42
python學習(一)
kaixinhai2010
2019-02-23 13:36:05
Python中修改Pk10平臺出租字符串的幾種方法
wojiuyong
2019-02-23 13:25:22
Python項目案例介紹,炫酷飛機大戰,內附源碼文件領取
扒皮狼
2019-02-23 12:53:12
Python 之 socket網絡模塊簡單應用
wx592bc92b285c7
2019-02-23 12:50:09
Python Day24 stark組件2
jedi911
2019-02-23 00:42:19