文档章节

[Python]轻量好用的数据库 SQLite3

 青衫游侠
发布于 2015/02/13 19:04
字数 1298
阅读 69
收藏 1

      最近的小项目要用到数据库,但是数据量又不是特别多,用postgreSQL, MySQL又显得太麻烦。知道Python自带一个轻量化的数据库SQLite,拿来用了一用,性能和效果都不错。


一,数据库安装和新建

import sqlite3

con = sqlite3.connect('/tmp/test.db')

上面的代码就完成了SQLite3数据库的安装,和新数据库的创建。注意connect后面的括号里是字符串,包含想要创建数据库的路径。如果数据库已经存在,则意味着打开这个数据库。


二,数据库操作

      python里的数据库都是通过“游标”(cursor)来完成的。在对目标数据库进行读写前,需要先定义一个游标,然后通过游标来对数据库进行操作,execute后面跟的就是SQL语言命令:

cur = con.cursor()
cur.execute('CREATE TABLE foo (o_id INTEGER PRIMARY KEY, fruit VARCHAR(20), veges VARCHAR(30))')

       下面引用的是数据库游标的描述:

        游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL  选择语句相关联。因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用 C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功, 该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。

        我们知道关系数据库管理系统实质是面向集合的,在Sqlite中并没有一种描述表中单一记录的表达形式,除非使用where  子句来限制只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。由此可见,游标允许应用程序对查询语句select  返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。


三, 数据库事务提交

        对数据库的操作后,需要将操作后的变动提交到数据库。这时候要用到刚刚新建/打开数据库时候用到的数据库连接对象了。以下是几个常用的数据库对象操作。

cur.commit() #事务提交
cur.rollback() #事务回滚
cur.close() #关闭一个数据库连接
cur.cursor() #创建一个游标

        

四,获取查询结果

      数据库使用查询语句返回的结果,保存在fetchall() 等函数里面。常用的有下面几个:

cur.fetchall() #返回全部结果
cur.description() #表结构描述
cur.fetchone() #最后一个结果


五,Python数据库自定义操作

      像我这样数据量不大,偶尔查询/写入一下,而且又想偷懒的话,可以自定义一个函数,将要做的动作包含到函数,留一个变量接受SQL语句就好了:

def sql_cmd(req):
    DB_PATH = os.path.join(PATH, "IP.db")
    cx = sqlite3.connect(DB_PATH)
    cu = cx.cursor()
    cu.execute('%s' % req)
    cx.commit()
    return cu.fetchall()

这样,我在Python中操作数据库的时候,只需要直接使用仿SQL语句就好了:

sql_cmd('SELECT * FROM tables')

sql_cmd('CREATE table D_%s (ID INTEGER PRIMARY KEY, IP_Address text UNIQUE NOT NULL, User text DEFAULT "%s", Password text DEFAULT "%s", TimeStamp NOT NULL DEFAULT "%s")' % (GroupName.get(), BMC_USER.get(), BMC_PSW.get(), Current_Time.get()))


六,常用数据库操作语句:

创建表 CREATE TABLE

修改表 ALTER TABLE

删除表 DROP TABLE

主键 PRIMARY KEY

默认值 DEFAULT

非空 NOT NULL

唯一 UNIQUE

条件检查 CHECK

外键 FOREIGN KEY

插入数据 INSERT INTO 表(列...) VALUES(值...)


修改数据 UPDATE 表 SET 列 = '新值' 【WHERE 条件语句】

删除数据 DELETE FROM 表 【WHERE 条件语句】

查找数据 SELECT 列... FROM 表

限制返回数量 SELECT 列... FROM 表 LIMIT 数量 OFFSET 位置

别名 SELECT 列 AS 别名,列 AS 别名 FROM

条件查询 SELECT 列 FROM 表 【WHERE 条件语句】

排序 ORDER BY 列 ASC (DESC)

区分 DISTINCT 列

分组 GROUP BY 列

逻辑运算符


七,逆序排列SQL查询表: 

只需要在查询的组名后加 desc 即可将结果以逆序形式显示出来。


在你的select中使用order by id desc

select * from table name order by id desc


id 可以是你表里的任意列,最好是主键


© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 6
码字总数 3498
作品 0
闵行
私信 提问
Python中轻量数据库SQlite3的使用

版权声明:本文为博主 一銤阳光 学习整理的文章,如需转载,请注明出处、附上CSDN博文链接。 https://blog.csdn.net/CSDNhuaong/article/details/80793573 1.写在前面 Python SQLITE数据库是...

一銤阳光
06/24
0
0
linux下的 python开发环境

1.安装搜狗 : (1)官网下载搜狗输入法,下载完成后,直接可以在ubuntu软件中心打开 (2)在langage support中install (3)all settings->text entry->input method->show current input source-......

tavenpy
2015/04/13
0
2
ubuntu中的django安装配置与操作

1 安装django,在安装前确保python已经安装,ubuntu中默认有安装的。我们只需要安装django即可,解压django压缩文件,进入解压后的文件夹,运行,python setup.py install即可安装django到p...

闵开慧
2012/09/27
0
0
python3 sqlite 使用

SQLlte数据类型 创建数据库,创建表 执行语句后一定要提交!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 如果要使用SQL必须要导入sqlite3库。 添加数据 要添加一些数据到表中,需要使用...

阿豪boy
01/21
0
0
Python中使用SQLite

SQLite: SQLite是一种数据库,Python中集成了SQLite3,所以在Python中使用SQLite,可以直接导入SQLite包,不需要做额外的配置。 更多的SQLite简介和相关知识可以查看专门的教程:http://ww...

akane_oimo
09/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
3
0
大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
2
0
聊聊storm的window trigger

序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public v......

go4it
昨天
6
0
CentOS 生产环境配置

初始配置 对于一般配置来说,不需要安装 epel-release 仓库,本文主要在于希望跟随 RHEL 的配置流程,紧跟红帽公司对于服务器的配置说明。 # yum update 安装 centos-release-scl # yum ins...

clin003
昨天
9
0
GPON网络故障处理手册

导读 为了方便广大网络工作者工作需要,特搜集以下GPON网络处理流程供大家学习参考。开始—初步定为故障—检查光纤状况—检查ONU状态--检查设备运行状态—检查设备数据配置—检查上层设备状态...

问题终结者
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部