专栏首页DHUtoBUAAPython读取SQLite文件数据

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 条评论
登录 后参与评论

相关文章

  • Ray-AABB交叉检测算法

      最近在解决三维问题时,需要判断线段是否与立方体交叉,这个问题可以引申为:射线是否穿过立方体AABB。   在3D游戏开发中碰撞检测普遍采用的算法是轴对齐矩...

    waylon
  • 查找数组中重复的数字

            题目来源于《剑指Offer》中的面试题3:找出数组中重复的数字。   // 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中...

    waylon
  • 通过ODBC接口访问人大金仓数据库

      国产化软件和国产化芯片的窘境一样,一方面市场已经存在性能优越的同类软件,成本很低,但小众的国产化软件不仅需要高价买入版权,并且软件开发维护成本高;另一方面,...

    waylon
  • 专题研究|量化交易怎么少得了数据库管理!来看一款Python内置的数据库

    Python 进行数据分析和价值挖掘是当前炙手可热的技术领域,如何高效地管理大量数据是其中非常关键的环节。数据库是最佳的解决方案之一,目前流行的数据库有Orac...

    AkShare
  • 【用SQLite做数据分析】Python操作SQLite的入门介绍

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。...

    潘永斌
  • 专访天数科技创始人兼CEO李云鹏:充分尊重工程师的个性差异

    李云鹏,天数科技创始人兼CEO;曾任美国甲骨文公司全球研发总监,从事甲骨文数据库10g至12c的研发工作。日前,笔者采访了李云鹏,请他分享国内外数据库发展的差异...

    CSDN技术头条
  • 2018戴尔科技峰会:数字化就是生产力,沃趣科技持续为企业数字化转型提速护航

    10月17日,2018戴尔科技峰会在京召开,此次峰会以“行臻 · 致远”为主题,以数字化技术及其发展趋势为切入点,主题依然锁定在帮助企业实现数字化转型上面。本次...

    沃趣科技
  • MySQL数据库实现主从复制

    我们用的在这篇文章《在CentOS上使用Nginx和Tomcat搭建高可用高并发网站》使用的只有一个MySQL数据库。

    夜雨飘零
  • 图说TDSQL | 张家港行,我是你的“破壁人”

    随着互联网的不断发展和逐渐普及,各行各业也纷纷选择了上云之路,腾讯云数据库致力于运用领先技术,助力企业上云,分布式数据库TDSQL就是部署在腾讯云上的一款具备...

    腾讯云数据库 TencentDB
  • 数据库的概念和操作、T-SQL语言(数据库学习)

    SQL是结构化查询语言,集数据定义、数据查询、数据操纵和数据控制功能于一体的语言。

    营琪

扫码关注云+社区

领取腾讯云代金券