21|SQLite文本数据库:如何进行数据管理(上)?

你在办公中,一定遇到过需要数据持久化的问题。数据持久化,简单来说,就是当你关闭程序的时候,数据依然可以完整地保存在电脑中。你可能会想到用文本文件、Excel 来存储这些数据,文本呢,没有办法按列读写数据,Excel 呢,支持的默认 API 无法进行复杂查询。所以我今天要给你介绍一个功能强大,但编写代码又简单的数据库 SQLite。

你可以用 SQLite 存储结构化的数据,把程序的处理结果保存到电脑中,便于下次或使用新的程序对这些数据进行访问。

用 SQLite 存储结构化的数据,包括增删改查这些操作。所以今天这节,就教你怎么来使用函数封装 SQL 语句,实现数据的读取和写入,下一节我们再来学习如何通过类实现复杂的 SQL 语句的封装,以及如何更新和删除数据。

在讲解这些之前,考虑到 SQLite 在持久化数据存储的重要性,我想要先给你介绍 SQLite 的优势。

使用 SQLite 代替文本和 Excel 有哪些优势

也许你对 SQLite 这个名字还很陌生,但其实你早就在手机、智能电视、机顶盒等电子设备中用到过它了,比如手机上的通讯录,就是使用 SQLite 存储联系人的。

SQLite 中存储的内容是结构化数据,像是通讯录、企业 ERP 数据、财务数据等这些存储和排列很有规律的数据,就被称作结构化数据。类似 Excel 的格式一样,分为“行”和“列”。以存储通讯录为例,每一列会提前指定好哪一列存放姓名、哪那一列存放电话号码,而每一行就是一个联系人的姓名和电话的具体记录。

在自动化办公中,你可以把结构化数据存放到 SQLite 中,它的处理速度和文件体积上要比文本文件和 Excel 更有优势。它会比文本文件的处理速度更快,比 Excel 需要的空间更少。甚至有人将 SQLite 应用到了每天点击量在 10 万次的网站上,足见它的稳定和高效的处理效率。

SQLite 和你听说过的大型数据库 Oracle、MySQL 数据库不同,它更多是面向办公场景和移动设备的,所以它有大型数据库的稳定、高效、支持 SQL 语言的特性,但是也要比大型数据库学习起来更加简单。

正是由于它拥有数据库的特性,所以从 SQLite 中查找数据要比从文本文件中更快。而且它的数据还满足数据库必需的“增删改查”,但不支持设置字体、字号,所以存储一条数据所使用的空间会比 Excel 更小。这些特性叠加起来就刚好形成了 SQLite 的特有优势:

1. 数据查询速度快;

2. 存放数据的空间占用少;

3. 实现了一般数据库能够支持的(基于 SQL 语言的)增删改查。

总结来说,就是如果你需要存放结构化的数据,而且只关注数据读取的效率,不关注数据的样式,而且还需要编程语言来进行数据访问的话,使用 SQLite 要比文本文件、Excel 更适合你的办公场景。

介绍了 SQLite 这么多好处,那赶快带着你把它用起来吧。

为 SQLite 建立数据表

要想使用 SQLite 数据库,光有文件还不够,你还要为它建立数据表,类似你新建了一个 Excel 工作簿的文件,与此同时你还要建立一个工作表,把数据写在工作表上, 再将多张工作表放在工作簿上面。

因此,要想实现对数据库的操作,我也需要为 SQLite 创建一张工作表,接下来就用一个创建手机通讯录数据表的脚本,演示一下如何为 SQLite 数据库创建它的“工作表”的。

SQLite 建立数据表的一般流程

为了能够让你更具体地学习数据表是怎样创建和使用的,先把创建数据表的代码写出来给你,对照代码讲解,SQLite 建立数据表的流程。

import sqlite3
import pathlib

# 数据库文件的路径和文件名称
dir = pathlib.PurePath(__file__).parent
db = pathlib.PurePath(dir, "contents.db")

# 创建连接
conn = sqlite3.connect(db)

# 创建游标
cur = conn.cursor()
TXTSQL是一种文本数据库,文件存储方式类似mysql,兼容部分sql语句.   PHP需4.0以上版本才能运行。   官方网站:http://txtsql.com/ txtSQL简单例子(来源:http://smvcn.xhblog.com/archives/2007/259845.shtml)   <?php   include('./txtSQL.class.php');   $sql = new txtSQL('./data');   $sql->connect('root', 'bar');   /*创建数据库   $sql->createdb(array('db' => 'demo')) or die('Error creating txtSQL DB, txtSQL said: '.$sql->get_last_error());   */   /*选择数据库*/   $sql->selectdb ( 'demo' );   /*创建表   $columns = array('id' => array('type' => 'int', 'auto_increment' => 1, 'permanent' => 1 ),   'name' => array('type' => 'string', 'max' => 50),   'email' => array('type' => 'string', 'max' => 50)   );   foreach($columns as $k => $v){   echo "\$colums[$k]=";   foreach($v as $k1 => $v1){   echo "$k1:$v1 ";   }   echo "<br>";   }   $sql->execute('create table',array(   'table' => 'table1',   'columns' => $columns)) or die('建表发生错误:'.$sql->get_last_error());   if($sql->table_exists('table1','demo')){   echo "建表成功";   }else{   echo "建表失败";   }   */   /*插入纪录   $value = array(0 => array('name' => 'abc','email' => '[email protected]'),   1 => array('name' => '123','email' => '[email protected]'),   2 => array('name' => 'df','email' => '[email protected]'),   3 => array('name' => 'trt','email' => '[email protected]'),   4 => array('name' => 'tyty','email' => '[email protected]')   );   for($i=0;$i<5;$i++){   echo "\$value[$i]:";   foreach($value[$i] as $k => $v){   echo "[$k]=$v ";   }   echo "<br>";   }   for($i=0;$i<5;$i++){   if(!$sql->execute('insert',array('table' => 'table1','values' => $value[$i] ))){   die('An error occurred, txtSQL said: '.$sql->get_last_error());   }else{   echo "插入成功<br>";   }   }   */   /*修改表数据   $value = array('name' => 'abc','email' => '[email protected]');   if(!$sql->execute('update',array('table' => 'table1','where' => array('id = 1'),'values' => $value))){   die('An error occurred, txtSQL said: '.$sql->get_last_error());   }else{   echo "修改成功";   }   */   /*删除表内容   $delete = array('table' => 'table1','where' => array('id > 1'));   $delcount = $sql->execute('delete',$delete);   echo $delcount;   */   /*显示表内容*/   $select = array('table' => 'table1','orderby' => array('id','asc')/*,'where' => array('email =~ %bac%'),'limit' => array(0,9)*/);   $data = $sql->execute('select',$select);   echo "<table border=1><tr><th>id</th><th>name</th><th>email</th></tr>";   foreach ( $data as $key => $row )   {   echo "<tr>";   foreach($row as $k => $v){   echo "<td>$v</td>";   }   echo "</tr>";   }   echo "</table>";   echo "表内共有 ".$sql->table_count('table1')." 行<BR>";   /*加入主键   $sql->execute('alter table',array('table' => 'table1','action' => 'addkey','name' => 'id','values' => array('name' => 'id')));   */   echo "最后插入ID号:".$sql->last_insert_id('table1') ;   $sql->disconnect();   ?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值