Python读取SQLite文件数据

  近日在做项目时,意外听说有一种SQLite的数据库,相比自己之前使用的SQL Service甚是轻便,在对数据完整性、并发性要求不高的场景下可以尝试!

  1、SQLite简介:

  SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它(如安卓系统),它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Python、C#、PHP、Java等,还有ODBC接口。

  SQLite引擎不是一个“程序与之通信”的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。

  2、SQLite文件管理:

  SQLite文件的后缀是.db,可以使用SQLite 数据库的管理工具查看其内容,比如SQLiteStudio是一款 Sqlite数据库可视化工具,是使用Sqlite数据库开发应用的必备软件,软件无需安装,下载后解压即可使用。

  下图是一个简单的工程示例,ARPA数据保存在SQLite库中,定义了一个ARPAInfo表,该表具有ID、Time和ARPA三个字段,其中数据Tab中可以看到存储在文件中的数据,SQLite的嵌入式数据库的易于使用性可以加快应用程序的开发,并使得小型应用程序能够完全支持复杂的SQL,所以没有必要使用文本文件来实现持久存储。

  3、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 (英文)。

  最新代码可以查看本人Github: https://github.com/wylloong/TinyPrograms/blob/master/AccessSQLitebyPython

***********************************

  代码示例:

# -*- 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

***************************************

  程序运行结果示例:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏郭霖

Android数据库高手秘籍(一)——SQLite命令

要想熟练地操作任何一个数据库,最最基本的要求就是要懂SQL语言,这也是每个程序员都应该掌握的技能。虽说SQL博大精深,要想精通确实很难,但最基本的一些建表命令,...

19310
来自专栏数据和云

讲真,你该做备份的有效性校验了

编辑手记:最近刷爆了朋友圈的GitLab删库事件惊醒了一大批运维人员,五重备份全部失效,这是真的吗?嗯,经过无数次确认,的确所有备份都失效。而我同样相信,存在类...

3656
来自专栏Spark生态圈

爬虫框架Scrapy(例子)前言安装实战

最近看到一篇非常不错的关于新词发现的论文--互联网时代的社会语言学:基于SNS的文本数据挖掘,迫不及待的想小试牛刀。得先有语料啊……

673
来自专栏信安之路

分析绕过一款适合练手的云 WAF

X-WAF 是一款适用中、小企业的云 WAF 系统,让中、小企业也可以非常方便地拥有自己的免费云 WAF。

950
来自专栏漏斗社区

工具 | sqlmap系列(三)进阶篇

SQLMAP系列(二)介绍了sqlmap的基本注入流程,登陆注入和POST注入以及一个小技巧,本期斗哥将带来sqlmap的进阶使用,希望通过本期的学习能够帮助大...

3969
来自专栏思考的代码世界

Python网络数据采集之存储数据|第04天

存储媒体文件有两种主要的方式:只获取文件 URL 链接,或者直接把源文件下载下来。

4147
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装和配置Sphinx

Sphinx是一个开源搜索引擎,允许全文搜索。众所周知,它能非常有效地对大数据进行搜索。要编制索引的数据通常来自非常不同的来源:SQL数据库,纯文本文件,HTM...

720
来自专栏杨建荣的学习笔记

MySQL主从不一致的细小问题分析(r12笔记第62天)

今天和同事一起看了一个问题,她在一个主从环境中发现了数据不一致,存在主键冲突。 show slave status的报错信息大概是下面的样子。 L...

3407
来自专栏小白安全

重置dedecms管理员后台密码重现及分析

0×00 概述 2018年1月,网上爆出dedecms v5.7 sp2的前台任意用户密码重置和前台任意用户登录漏洞,加上一个管理员前台可修改其后台密码...

6345

使用 Excel 分析 CloudStack 使用记录

注:本文最初由 David Nailey 在 Build a Cloud 博客上撰写。

1939

扫码关注云+社区