python sqlite3 查詢操作及獲取對應查詢結果的列名


記錄查詢操作及獲取查詢結果列字段的方法

1.sqlite3 中獲取所有表名及各表字段名的操作方法

SQLite 數據庫中有一個特殊的表叫 sqlite_master,sqlite_master 的結構如下:

CREATE TABLE sqlite_master ( 
type TEXT, 
name TEXT, 
tbl_name TEXT, 
rootpage INTEGER, 
sql TEXT 
); 
  • 可以通過查詢這個表來獲取數據庫中所有表的信息
SELECT * FROM sqlite_master WHERE type='table';

  • 查詢某張表的所有字段
PRAGMA  table_info(表名);
示例:
PRAGMA  table_info(sqlite_sequence);

2. python 操作sqlite3,獲取sql 查詢結果及對應查詢結果的列名的方法

class DBOperate(object):
    """
    數據庫操作類
    """
    def __init__(self, db_file_path):
        # 連接 sqlite db
        # 關於commit(),如果isolation_level隔離級別默認,那么每次對數據庫的操作,都需要使用該命令,
        # 設置 isolation_level=None,變為自動提交模式
        self._db_file_path = db_file_path
        self.conn = sqlite3.connect(self._db_file_path, check_same_thread=False, isolation_level=None, timeout=1000)
        # 創建游標
        self.cur = self.conn.cursor()

    def queryall(self, sql):
        """
        查詢所有的數據及對應的列名
        :param sql:
        :return:
        """
        self.cur.execute(sql)
        # TODO 獲取查詢結果的列名
        columns_tuple = self.cur.description
        # columns_tuple示例: (('TACHE_NAME', None, None, None, None, None, None), ('avgtime', None, None, None, None, None, None), ('DATE', None, None, None, None, None, None), ('ANALYSIS_TIME', None, None, None, None, None, None))
        columns_list = [field_tuple[0] for field_tuple in columns_tuple]
        # TODO 獲取查詢結果
        query_result = self.cur.fetchall()
        return query_result, columns_list

    def close(self):
        """
        關閉數據庫連接
        :return:
        """
        if self.cur is not None:
            self.cur.close()
        if self.conn is not None:
            self.conn.close()


免責聲明!

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



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