Python讀取SQLite文件數據

  近日在作項目時,意外據說有一種SQLite的數據庫,相比本身以前使用的SQL Service甚是輕便,在對數據完整性、併發性要求不高的場景下能夠嘗試!
  一、SQLite簡介:
  SQLite是一個進程內的庫,實現了自給自足的、無服務器的、零配置的、事務性的 SQL 數據庫引擎。它的設計目標是嵌入式的,並且目前已經在不少嵌入式產品中使用了它(如安卓系統),它佔用資源很是的低,在嵌入式設備中,可能只須要幾百K的內存就夠了。它可以支持Windows/Linux/Unix等等主流的操做系統,同時可以跟不少程序語言相結合,好比 Python、C#、PHP、Java等,還有ODBC接口。
  SQLite引擎不是一個「程序與之通訊」的獨立進程,而是鏈接到程序中成爲它的一個主要部分。因此主要的通訊協議是在編程語言內的直接API調用。這在消耗總量、延遲時間和總體簡單性上有積極的做用。整個數據庫(定義、表、索引和數據自己)都在宿主主機上存儲在一個單一的文件中。它的簡單的設計是經過在開始一個事務的時候鎖定整個數據文件而完成的。
  二、SQLite文件管理:
  SQLite文件的後綴是.db,可使用SQLite 數據庫的管理工具查看其內容,好比SQLiteStudio是一款 Sqlite數據庫可視化工具,是使用Sqlite數據庫開發應用的必備軟件,軟件無需安裝,下載後解壓便可使用。
  下圖是一個簡單的工程示例,ARPA數據保存在SQLite庫中,定義了一個ARPAInfo表,該表具備ID、Time和ARPA三個字段,其中數據Tab中能夠看到存儲在文件中的數據,SQLite的嵌入式數據庫的易於使用性能夠加快應用程序的開發,並使得小型應用程序可以徹底支持複雜的SQL,因此沒有必要使用文本文件來實現持久存儲。
 
  三、Python讀取SQLite文件
  SQLite3 可以使用 sqlite3 模塊與 Python 進行集成。sqlite3 模塊是由 Gerhard Haring 編寫的。它提供了一個與 PEP 249 描述的 DB-API 2.0 規範兼容的 SQL 接口。您不須要單獨安裝該模塊,由於 Python 2.5.x 以上版本默認自帶了該模塊。爲了使用 sqlite3 模塊,您首先必須建立一個表示數據庫的鏈接對象,而後您能夠有選擇地建立光標對象,這將幫助您執行全部的 SQL 語句。
  關於Python sqlite3 模塊 API的介紹,能夠在如下連接查看。 http://www.runoob.com/sqlite/sqlite-python.html (中文)和 https://docs.python.org/2/library/sqlite3.html (英文)。
***********************************
  代碼示例:
# -*- coding:utf8 -*-

'''
Author:Wang Yanlong
Date: 2017-08-16

All rights reserved.
Distributed under the BSD license.

References:
    https://docs.python.org/2/library/sqlite3.html  (English)
    http://www.runoob.com/sqlite/sqlite-python.html (Chinese)
'''

import sqlite3 as db

# 從SQLite文件中讀取數據
def readFronSqllite(db_path,exectCmd):
    conn = db.connect(db_path)  # 該 API 打開一個到 SQLite 數據庫文件 database 的連接,若是數據庫成功打開,則返回一個鏈接對象
    cursor=conn.cursor()        # 該例程建立一個 cursor,將在 Python 數據庫編程中用到。
    conn.row_factory=db.Row     # 可訪問列信息
    cursor.execute(exectCmd)    #該例程執行一個 SQL 語句
    rows=cursor.fetchall()      #該例程獲取查詢結果集中全部(剩餘)的行,返回一個列表。當沒有可用的行時,則返回一個空的列表。
    return rows
    #print(rows[0][2]) # 選擇某一列數據

# 解析ARPA 單幀信息
def readfromAppaFrame(ARPAFrame):
    subARPA=ARPAFrame.split(',')
    print(subARPA)

if __name__=="__main__":
    rows=readFronSqllite('E://ARPA.db',"select ARPA from ARPAInfo")
    readLines=10010
    lineIndex=10000
    while lineIndex<readLines:
        row=rows[lineIndex] # 獲取某一行的數據,類型是tuple
        content="".join(row) #tuple轉字符串
        readfromAppaFrame(content) # 解析ARPA數據
        lineIndex+=1

***************************************html

  程序運行結果示例:python

相關文章
相關標籤/搜索