1. 程式人生 > >python sqlite3 數據庫操作

python sqlite3 數據庫操作

成功 中文 遊標 默認 pytho pre 滾動 back 系統

python sqlite3 數據庫操作

SQLite3是python的內置模塊,是一款非常小巧的嵌入式開源數據庫軟件。

1. 導入Python SQLite數據庫模塊

import sqlite3

  

2. python sqlite3模塊的API

"""
sqlite3.connect(database [,timeout ,other optional arguments])
該 API 打開一個到 SQLite 數據庫文件 database 的鏈接。您可以使用 ":memory:" 來在 RAM 中打開一個到 database 的數據庫連接,而不是在磁盤上打開。如果數據庫成功打開,則返回一個連接對象。
當一個數據庫被多個連接訪問,且其中一個修改了數據庫,此時 SQLite 數據庫被鎖定,直到事務提交。timeout 參數表示連接等待鎖定的持續時間,直到發生異常斷開連接。timeout 參數默認是 5.0(5 秒)。
如果給定的數據庫名稱 filename 不存在,則該調用將創建一個數據庫。如果您不想在當前目錄中創建數據庫,那麽您可以指定帶有路徑的文件名,這樣您就能在任意地方創建數據庫。

connection.cursor([cursorClass])
該例程創建一個 cursor,將在 Python 數據庫編程中用到。該方法接受一個單一的可選的參數 cursorClass。如果提供了該參數,則它必須是一個擴展自 sqlite3.Cursor 的自定義的 cursor 類。

cursor.execute(sql [, optional parameters])
該例程執行一個 SQL 語句。該 SQL 語句可以被參數化(即使用占位符代替 SQL 文本)。sqlite3 模塊支持兩種類型的占位符:問號和命名占位符(命名樣式)。
例如:cursor.execute("insert into people values (?, ?)", (who, age))

connection.execute(sql [, optional parameters])
該例程是上面執行的由光標(cursor)對象提供的方法的快捷方式,它通過調用光標(cursor)方法創建了一個中間的光標對象,然後通過給定的參數調用光標的 execute 方法。

cursor.executemany(sql, seq_of_parameters)
該例程對 seq_of_parameters 中的所有參數或映射執行一個 SQL 命令。

connection.executemany(sql[, parameters])
該例程是一個由調用光標(cursor)方法創建的中間的光標對象的快捷方式,然後通過給定的參數調用光標的 executemany 方法。

cursor.executescript(sql_script)
該例程一旦接收到腳本,會執行多個 SQL 語句。它首先執行 COMMIT 語句,然後執行作為參數傳入的 SQL 腳本。所有的 SQL 語句應該用分號(;)分隔。

connection.executescript(sql_script)
該例程是一個由調用光標(cursor)方法創建的中間的光標對象的快捷方式,然後通過給定的參數調用光標的 executescript 方法。

connection.total_changes()
該例程返回自數據庫連接打開以來被修改、插入或刪除的數據庫總行數。

connection.commit()
該方法提交當前的事務。如果您未調用該方法,那麽自您上一次調用 commit() 以來所做的任何動作對其他數據庫連接來說是不可見的。

connection.rollback()
該方法回滾自上一次調用 commit() 以來對數據庫所做的更改。

connection.close()
該方法關閉數據庫連接。請註意,這不會自動調用 commit()。如果您之前未調用 commit() 方法,就直接關閉數據庫連接,您所做的所有更改將全部丟失!

cursor.fetchone()
該方法獲取查詢結果集中的下一行,返回一個單一的序列,當沒有更多可用的數據時,則返回 None。

cursor.fetchmany([size=cursor.arraysize])
該方法獲取查詢結果集中的下一行組,返回一個列表。當沒有更多的可用的行時,則返回一個空的列表。該方法嘗試獲取由 size 參數指定的盡可能多的行。

cursor.fetchall()
該例程獲取查詢結果集中所有(剩余)的行,返回一個列表。當沒有可用的行時,則返回一個空的列表。
"""

  

3. 創建/打開sqlite3數據庫
調用connect函數的時候,指定庫名稱,如果指定的數據庫存在就直接打開這個數據庫,如果不存在就新創建一個再打開

con = sqlite3.connect("sql.db")

  

創建數據庫在內存中

con = sqlite3.connect(":memory:")

  

4. 數據庫連接對象
打開數據庫時返回的對象con 就是一個數據庫連接對象,具體操作有:

1). commit()	-- 事務提交
2). rollback()	-- 事務回滾
3). close()	-- 關閉數據庫連接
4). cursor()	-- 創建一個遊標

註:關於commit(),如果isolation_level隔離級別默認,那麽每次對數據庫的操作,都需要使用該命令,可以將其設置isolation_level=None,這樣就變為自動提交模式

5. 使用遊標查詢數據庫
使用遊標對象SQL語句查詢數據庫,獲得查詢對象。 通過以下方法來定義一個遊標:

cu = con.cursor()

  



遊標的具體操作有:

1). execute()	-- 執行sql語句
2). executemany()	-- 執行多條sql語句
3). close()	-- 關閉遊標
4). fetchone()	-- 從結果中取出一條記錄,並將遊標指向下一條記錄
5). fetchmany()	-- 從結果中取多條記錄
6). fetchall()	-- 從結果中取出所有記錄
7).	scroll()	-- 遊標滾動

  


(1). 創建table

cu.execute("create table mytable (id integer primary key ,pid integer,name varchar(10) UNIQUE,nickname text NULL)")

  

(2). 插入數據

cu.execute("INSERT INFO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, ‘Paul‘, 32, ‘California‘, 20000.00)")
con.commit() # 提交插入的數據

  

(3). 查詢數據

cu.execute("select * from mytable")

  

(4). 修改數據

cu.execute("update mytable set name=‘xss‘ where id = 0")
con.commit()

  

(5). 刪除數據

cu.execute("delete from mytable where id = 1")
con.commit()

  

(6). 使用中文
確定你的IDE或者系統默認編碼是utf-8,並且在中文前加上u

x = u‘中文‘
cu.execute("update mytable set name=? where id = 0",x)

  

python sqlite3 數據庫操作