文档章节

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

 青衫游侠
发布于 2015/02/13 19:04
字数 1298
阅读 73
收藏 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数据库是...

一銤阳光
2018/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 linux两年,能在ubuntu下进行java和python编程,学习了python的django框架,但是还不是很精通,只能简单的建设一个简单的...

22too
2014/04/27
1K
3
python django开发web站点学习遇到的问题

操作系统:macos 编程语言:python 2.7 & django 1.5 & sqlite3 我是python初学者,参考http://www.ibm.com/developerworks/cn/linux/l-django/index.html学习开发web站点,但是遇到一些问题...

火镜先生
2013/03/16
1K
4
django-1.3在windows系统环境下的一个出错?'SafeUnicode' object has no attribute 'status_code'

此问题同时提交在http://www.oschina.net/question/565856_60068 http://segmentfault.com/question/2923/django-1-3%E5%9C%A8windows%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%E4%B8%8B%E7%9A%......

凌晨4点半
2012/07/05
2.2K
2

没有更多内容

加载失败,请刷新页面

加载更多

Linux Wireshark普通用户启动使用方案

当系统安装好Wireshark后请正常启动是否可以进行正常使用,如果不行请参考下列指导 向系统添加一个用户组 sudo groupadd wireshark //如提示此组存在可跳过 将指定用户添加到这个组中 sudo...

CHONGCHEN
今天
1
0
CSS 选择器参考手册

CSS 选择器参考手册 选择器 描述 [attribute] 用于选取带有指定属性的元素。 [attribute=value] 用于选取带有指定属性和值的元素。 [attribute~=value] 用于选取属性值中包含指定词汇的元素。...

Jack088
今天
2
0
数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
今天
4
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
4
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部