Python 之操作sqlite3


一、sqlite模塊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()

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

二、sqlite幫助類

__author__ = 'Yang'

import sqlite3

class DBTool(object):
    conn = None
    def __init__(self, dbname = 'data'):
        """
        初始化函數,創建數據庫連接
        """
        self.conn = sqlite3.connect('%s.db' % dbname)
        self.c = self.conn.cursor()

    def executeUpdate(self, sql, ob):
        """
        數據庫的插入、修改函數
        :param sql: 傳入的SQL語句
        :param ob: 傳入數據
        :return: 返回操作數據庫狀態
        """
        try:
            self.c.execute(sql, ob)
            i = self.conn.total_changes
        except Exception as e:
            print('錯誤類型: ', e)
            return False
        finally:
            self.conn.commit()
        if i > 0:
            return True
        else:
            return False

    def executeDelete(self, sql, ob):
        """
        操作數據庫數據刪除的函數
        :param sql: 傳入的SQL語句
        :param ob: 傳入數據
        :return: 返回操作數據庫狀態
        """
        try:
            self.c.execute(sql, ob)
            i = self.conn.total_changes
        except Exception as e:
            print(e)
            return False
        finally:
            self.conn.commit()
        if i > 0:
            return True
        else:
            return False

    def executeQuery(self, sql, ob):
        """
        數據庫數據查詢
        :param sql: 傳入的SQL語句
        :param ob: 傳入數據
        :return: 返回操作數據庫狀態
        """
        test = self.c.execute(sql, ob)
        return test

    def close(self):
        """
        關閉數據庫相關連接的函數
        :return:
        """
        self.c.close()
        self.conn.close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM