python用sqlite3模块操作sqlite数据库-乾颐堂

摘要:
SQLite是一个包含在C库中的轻量级数据库。一些应用可是使用SQLite保存内部数据。还有一种简单的场景也适用于SQLite,即统计数据的预计算。sqlite3rui.db2、打开一个已经存在的数据库:sqlite3已经存在的文件名创建一个新数据库和打开一个已经存在的数据库命令是一模一样的,如果文件在当前目录下不存在,则新建;如果存在,则打开。

SQLite是一个包含在C库中的轻量级数据库。它并不需要独立的维护进程,并且允许使用非标准变体(nonstandard variant)的SQL查询语句来访问数据库。

一些应用可是使用SQLite保存内部数据。它也可以在构建应用原型的时候使用,以便于以后转移到更大型的数据库。

SQLite的主要优点:

1. 一致性的文件格式:

在SQLite的官方文档中是这样解释的,我们不要将SQLite与Oracle或PostgreSQL去比较,与我们自定义格式的数据文件相比,SQLite不仅提供了很好的

移植性,如大端小端、32/64位等平台相关问题,而且还提供了数据访问的高效性,如基于某些信息建立索引,从而提高访问或排序该类数据的性能,SQLite提供的事务功能,也是在操作普通文件时无法有效保证的。

2. 在嵌入式或移动设备上的应用:

由于SQLite在运行时占用的资源较少,而且无需任何管理开销,因此对于PDA、智能手机等

移动设备来说,SQLite的优势毋庸置疑。

3. 内部数据库:

在有些应用场景中,我们需要为插入到数据库服务器中的数据进行数据过滤或数据清理,以保证最终插入到数据库服务器中的数据有效性。有的时候,数据是否有效,不能通过单一一条记录来进行判断,而是需要和之前一小段时间的历史数据进行特殊的计算,再通过计算的结果判断当前的数据是否合法。

在这种应用中,我们可以用SQLite缓冲这部分历史数据。还有一种简单的场景也适用于SQLite,即统计数据的预计算。比如我们正在运行数据实时采集的服务程序,我们可能需要将每10秒的数据汇总后,形成每小时的统计数据,该统计数据可以极大的减少用户查询时的数据量,从而大幅提高前端程序的查询效率。在这种应用中,我们可以将1小时内的采集数据均缓存在SQLite中,在达到整点时,计算缓存数据后清空该数据。

4. 数据分析:

可以充分利用SQLite提供SQL特征,完成简单的数据统计分析的功能。这一点是yaml,csv文件无法比拟的。

用我的话来说,他很小,很适合做临时的数据库,迁移数据很简单,直接传递文件就可以了。 其实我一开是是选用leveldb的,但是他的特性像nosql,一些稍微复杂的查询,就有些麻烦了。

1、创建一个新的数据库:sqlite3 文件名

这个test.db 存放着所有的数据。

sqlite3 rui.db

2、打开一个已经存在的数据库:sqlite3 已经存在的文件名

创建一个新数据库和打开一个已经存在的数据库命令是一模一样的,如果文件在当前目录下不存在,则新建;如果存在,则打开。

3、导入数据:.read 数据文件

打开记事本,并将下列 SQL 语句复制到记事本中,保存为 test.sql 到上面说到的 Db 目录下,在命令行环境中输入

.read test.sql

即将所有的数据导入到 rui.db 数据库中。

4、列出所有的数据表: .tables

完成上面所有的工作以后,我们就可以列出所有的数据表了

1
2
3
4
5
6
7
8
[root@devops-ruifengyun/tmp]$sqlite3rui.db
SQLiteversion3.7.172013-05-2000:56:22
Enter".help"forinstructions
EnterSQLstatementsterminatedwitha";"
sqlite>.tables
ceshitbl1
sqlite>
sqlite>

5、显示数据库结构:.schema

其实就是一些 SQL 语句,他们描述了数据库的结构,如图

1
2
3
sqlite>.schema
CREATETABLEtbl1(onevarchar(10),twosmallint);
CREATETABLEceshi(usertext,notetext);

6、显示表的结构:.schema 表名

1
2
sqlite>.schemaceshi
CREATETABLEceshi(usertext,notetext)

7、导出某个表的数据: .dump 表名

1
2
3
4
5
6
7
sqlite>.dumptbl1
PRAGMAforeign_keys=OFF;
BEGINTRANSACTION;
CREATETABLEtbl1(onevarchar(10),twosmallint);
INSERTINTO"tbl1"VALUES('goodbye',20);
INSERTINTO"tbl1"VALUES('hello!',10);
COMMIT;

再来讲解下python sqlite3的用法,其实和mysqldb很像吧,他的语法和mysql差不多

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
importsqlite3
#原文:xiaorui.cc
#链接数据库文,sqlite都是以文件的形式存在的。
#如果数据库文件不存在,回新建一个,如果存在则打开此文件
conn=sqlite3.connect('example')
c=conn.cursor()
#创建table
c.execute('''createtableceshi(usertext,notetext)''')
#插入数据,执行SQL语句
c.execute('''insertintoceshi(user,note)values('mPfiJRIH9T','mPfiJRIH9T')''')
c.execute('''insertintoceshi(user,note)values('7IYcUrKWbw','7IYcUrKWbw')''')
c.execute('''insertintoceshi(user,note)values('bXB9VcPdnq','bXB9VcPdnq')''')
c.execute('''insertintoceshi(user,note)values('2JFk7EWcCz','2JFk7EWcCz')''')
c.execute('''insertintoceshi(user,note)values('QeBFAlYdPr','QeBFAlYdPr')''')
c.execute('''insertintoceshi(user,note)values('bDL4T69rsj','bDL4T69rsj')''')
c.execute('''insertintoceshi(user,note)values('BOxPqmkEd9','BOxPqmkEd9')''')
c.execute('''insertintoceshi(user,note)values('rvBegjXs16','rvBegjXs16')''')
c.execute('''insertintoceshi(user,note)values('CWrhA2eSmQ','CWrhA2eSmQ')''')
c.execute('''insertintoceshi(user,note)values('qQicfV2gvG','qQicfV2gvG')''')
c.execute('''insertintoceshi(user,note)values('s3vg1EuBQb','s3vg1EuBQb')''')
c.execute('''insertintoceshi(user,note)values('Lne4xj3Xpc','Lne4xj3Xpc')''')
c.execute('''insertintoceshi(user,note)values('PH3R86CKDT','PH3R86CKDT')''')
c.execute('''insertintoceshi(user,note)values('HEK7Ymg0Bw','HEK7Ymg0Bw')''')
c.execute('''insertintoceshi(user,note)values('lim2OCxhQp','lim2OCxhQp')''')
c.execute('''insertintoceshi(user,note)values('kVFfLljBJI','kVFfLljBJI')''')
c.execute('''insertintoceshi(user,note)values('Hpbs3VOXNq','Hpbs3VOXNq')''')
c.execute('''insertintoceshi(user,note)values('f5ubmznBIE','f5ubmznBIE')''')
c.execute('''insertintoceshi(user,note)values('beJCQA2oXV','beJCQA2oXV')''')
c.execute('''insertintoceshi(user,note)values('JyPx0iTBGV','JyPx0iTBGV')''')
c.execute('''insertintoceshi(user,note)values('4S7RQTqw2A','4S7RQTqw2A')''')
c.execute('''insertintoceshi(user,note)values('ypDgkKi27e','ypDgkKi27e')''')
c.execute('''insertintoceshi(user,note)values('Anrwx8SbIk','Anrwx8SbIk')''')
c.execute('''insertintoceshi(user,note)values('k5ZJFrd8am','k5ZJFrd8am')''')
c.execute('''insertintoceshi(user,note)values('KYcTv54QVC','KYcTv54QVC')''')
c.execute('''insertintoceshi(user,note)values('Jv6OyfMA0g','Jv6OyfMA0g')''')
c.execute('''insertintoceshi(user,note)values('kpSLsQYzuV','kpSLsQYzuV')''')
c.execute('''insertintoceshi(user,note)values('u2zkJQWdOY','u2zkJQWdOY')''')
c.execute('''insertintoceshi(user,note)values('D0aspFbW8c','D0aspFbW8c')''')
c.execute('''insertintoceshi(user,note)values('CwqhvDOrWZ','CwqhvDOrWZ')''')
c.execute('''insertintoceshi(user,note)values('Tdy5LA9sWO','Tdy5LA9sWO')''')
c.execute('''insertintoceshi(user,note)values('76HnRVbLX0','76HnRVbLX0')''')
c.execute('''insertintoceshi(user,note)values('B3aoFibRPV','B3aoFibRPV')''')
c.execute('''insertintoceshi(user,note)values('7Q6lNdL5JP','7Q6lNdL5JP')''')
c.execute('''insertintoceshi(user,note)values('Hsob6Jyv4A','Hsob6Jyv4A')''')
#将变动保存到数据库文件,如果没有执行词语句,则前面的insert语句操作不会被保存
conn.commit()
c.execute('''select*fromceshi''').fetchall()
#得到所有的记录
rec=c.execute('''select*fromceshi''')
printc.fetchall()

http://www.qytang.com/
http://www.qytang.com/cn/list/29/
http://www.qytang.com/cn/list/28/610.htm
http://www.qytang.com/cn/list/28/595.htm
http://www.qytang.com/cn/list/28/583.htm
http://www.qytang.com/cn/list/28/582.htm
http://www.qytang.com/cn/list/28/576.htm
http://www.qytang.com/cn/list/28/523.htm
http://www.qytang.com/cn/list/28/499.htm
http://www.qytang.com/cn/list/28/488.htm
http://www.qytang.com/cn/list/28/466.htm
http://www.qytang.com/cn/list/28/463.htm
http://www.qytang.com/cn/list/28/458.htm
http://www.qytang.com/cn/list/28/455.htm
http://www.qytang.com/cn/list/28/447.htm

免责声明:文章转载自《python用sqlite3模块操作sqlite数据库-乾颐堂》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux配置阿里epl源为什么每个浏览器User-Agent都是Mozilla?真相原来是这样!下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

利用pyinstaller打包加密Python项目

  最近用Python给媳妇写了两个小项目,给解决了她的每天重复的一些人工操作。媳妇很开心,但是问题来了,她是个Python小白,对她来说,需要安装配置Python环境和一大堆第三方模块是个麻烦事儿。而且后续把这些工作交接给别人的话,一是又需要重新安装Python环境,二是我辛苦给她写的源码就这样暴露了。   为了解决这个问题,于是就开始百度。果然Pyth...

车牌识别(end-to-end-for-chinese-plate-recognition)项目搭建基于Mxnet(Python 3.5)

最近看到geihub上有个车牌识别的项目,感觉很有意思,从上面fork了一下弄到本地自己跑了下。在安装过程中遇到了一些问题,记录如下。 项目github连接:https://github.com/szad670401/end-to-end-for-chinese-plate-recognition ,本机环境Win8 64bit 该项目是基于Python做...

postgres使用dblink

在oracle中,经常会使用dblink将一些线上的数据导入到开发库中定位问题。 postgresql中也可以使用dblink。 下面是网上的资料:         1、如何在postgresql中建立dblink?         2、建立成功后,如何使用dblink?         3、postgresql中的dblink和oracle中的dbl...

高效率的排列组合算法《编程珠矶》python实现

组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标代表的数被选中,为0则没选中。 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数。 然后从左到右扫描数组元素值的“10”组合,找到第一个“10”组合后将其变为 “01”组合,同时将其左边的所有“1”全部移动到数组的最左端。 当第一个“1”移动到数组的m-n的位置,...

PyMongo 常见问题

PyMongo是线程安全的吗PyMongo是线程安全的,并且为多线程应用提供了内置的连接池 PyMongo是进程安全的吗PyMongo不是进程安全的,如果你在fork()中使用MongoClient实例,必须小心。具体来说,MongoClient实例不能从父进程复制到子进程,父进程和每个子进程必须创建属于自己的MongoClient实例。由于本身的不兼容性...

ELK学习笔记之Elasticsearch删除指定日期的数据(脚本+定时任务)

0x00 概述 目前使用的ES版本为6.3.x,经过长时间的积累,ES内数据越来越多,需要删除指定日志之前的日志。 例如只要求保留60天的日志,那么就要删除60天之前的所有索引和日志。 0x01 ES删除XX天之前的索引和数据 #!/bin/sh#ES版本为6.3.x function delIndex() { #此处输入要删除的索引名字...