SQLite是一種嵌入式資料庫,它的資料庫就是一個檔案。由於SQLite本身是C寫的,而且體積很小,所以,經常被整合到各種應用程式中,甚至在iOS和Android的App中都可以整合。
Python就內建了SQLite3,所以,在Python中使用SQLite,不需要安裝任何東西,直接使用。
在使用SQLite前,我們要先搞清楚幾個概念:
表是資料庫中存放關聯式資料的集合,一個資料庫裡面通常都包含多個表,例如學生的表,班級的表,學校的表,等等。表和表之間透過外鍵關聯。
要操作關聯式資料庫,首先需要連接到資料庫,一個資料庫連線稱為Connection;
連接到資料庫後,需要開啟遊標,稱為Cursor,透過Cursor執行SQL語句,然後,獲得執行結果。
Python定義了一套操作資料庫的API接口,任何資料庫要連接到Python,只需要提供符合Python標準的資料庫驅動即可。
由於SQLite的驅動程式內建在Python標準函式庫中,所以我們可以直接來操作SQLite資料庫。
我們在Python互動式命令列實作一下:
# 导入SQLite驱动: >>> import sqlite3 # 连接到SQLite数据库 # 数据库文件是test.db # 如果文件不存在,会自动在当前目录创建: >>> conn = sqlite3.connect('test.db') # 创建一个Cursor: >>> cursor = conn.cursor() # 执行一条SQL语句,创建user表: >>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))') <sqlite3.Cursor object at 0x10f8aa260> # 继续执行一条SQL语句,插入一条记录: >>> cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')') <sqlite3.Cursor object at 0x10f8aa260> # 通过rowcount获得插入的行数: >>> cursor.rowcount 1 # 关闭Cursor: >>> cursor.close() # 提交事务: >>> conn.commit() # 关闭Connection: >>> conn.close()
我們再試試查詢記錄:
>>> conn = sqlite3.connect('test.db') >>> cursor = conn.cursor() # 执行查询语句: >>> cursor.execute('select * from user where id=?', '1') <sqlite3.Cursor object at 0x10f8aa340> # 获得查询结果集: >>> values = cursor.fetchall() >>> values [(u'1', u'Michael')] >>> cursor.close() >>> conn.close()
使用Python的DB-API時,只要搞清楚Connection和Cursor對象,開啟後一定記得關閉,就可以放心使用。
使用Cursor物件執行insert,update,delete語句時,執行結果由rowcount傳回影響的行數,就可以拿到執行結果。
使用Cursor物件執行select語句時,透過featchall()可以拿到結果集。結果集是一個list,每個元素都是一個tuple,對應一行記錄。
如果SQL語句有參數,那麼需要把參數依照位置傳遞給execute()方法,有幾個?佔位符就必須對應幾個參數,例如:
cursor.execute('select * from user where id=?', '1')
SQLite支援常見的標準SQL語句以及幾種常見的資料類型。具體文件請參閱SQLite官方網站。
小結
#在Python中操作資料庫時,要先匯入資料庫對應的驅動,然後,透過Connection物件和Cursor物件操作資料。
要確保開啟的Connection物件和Cursor物件都正確地關閉,否則,資源就會洩漏。
如何確保出錯的情況下也關閉掉Connection物件和Cursor物件呢?請回想try:...except:...finally:...的用法。
以上是sqlite如何安裝?簡單說明Python中self用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!