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)