简单的介绍

SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身。它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

安装与使用

1.导入Python SQLITE数据库模块

Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~

import sqlite3

2. 创建/打开数据库

在调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开。

cx = sqlite3.connect("E:/test.db")

也可以创建数据库在内存中。

con = sqlite3.connect(":memory:")

3.数据库连接对象

打开数据库时返回的对象cx就是一个数据库连接对象,它可以有以下操作:

commit()--事务提交

rollback()--事务回滚

close()--关闭一个数据库连接

cursor()--创建一个游标

关于commit(),如果isolation_level隔离级别默认,那么每次对数据库的操作,都需要使用该命令,你也可以设置isolation_level=None,这样就变为自动提交模式。

4.使用游标查询数据库

我们需要使用游标对象SQL语句查询数据库,获得查询对象。 通过以下方法来定义一个游标。

cu=cx.cursor()

游标对象有以下的操作:execute()--执行sql语句

executemany--执行多条sql语句

close()--关闭游标

fetchone()--从结果中取一条记录,并将游标指向下一条记录

fetchmany()--从结果中取多条记录

fetchall()--从结果中取出所有记录

scroll()--游标滚动

1. 建表

cu.execute("create table catalog (id integer primary key,pid integer,name varchar(10) UNIQUE,nickname text NULL)")

上面语句创建了一个叫catalog的表,它有一个主键id,一个pid,和一个name,name是不可以重复的,以及一个nickname默认为NULL。

2. 插入数据

请注意避免以下写法:

# Never do this -- insecure 会导致注入攻击

pid=200

c.execute("... where pid = '%s'" % pid)

正确的做法如下,如果t只是单个数值,也要采用t=(n,)的形式,因为元组是不可变的。

for t in[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:

cx.execute("insert into catalog values (?,?,?,?)", t)

简单的插入两行数据,不过需要提醒的是,只有提交了之后,才能生效.我们使用数据库连接对象cx来进行提交commit和回滚rollback操作.

cx.commit()

3.查询

cu.execute("select * from catalog")

要提取查询到的数据,使用游标的fetch函数,如:

In [10]: cu.fetchall()

Out[10]: [(0, 10, u'abc', u'Yu'), (1, 20, u'cba', u'Xu')]

如果我们使用cu.fetchone(),则首先返回列表中的第一项,再次使用,则返回第二项,依次下去.

4.修改

In [12]: cu.execute("update catalog set name='Boy' where id = 0")

In [13]: cx.commit()

注意,修改数据以后提交

5.删除

cu.execute("delete from catalog where id = 1")

cx.commit()

6.使用中文

请先确定你的IDE或者系统默认编码是utf-8,并且在中文前加上u

x=u'鱼'

cu.execute("update catalog set name=? where id = 0",x)

cu.execute("select * from catalog")

cu.fetchall()

[(0, 10, u'\u9c7c', u'Yu'), (1, 20, u'cba', u'Xu')]

如果要显示出中文字体,那需要依次打印出每个字符串

In [26]: for item in cu.fetchall():

....: for element in item:

....: print element,

....: print

....:

0 10 鱼 Yu

1 20 cba Xu

7.Row类型

Row提供了基于索引和基于名字大小写敏感的方式来访问列而几乎没有内存开销。 原文如下:

sqlite3.Row provides both index-based and case-insensitive name-based access to columns with almost no memory overhead. It will probably be better than your own custom dictionary-based approach or even a db_row based solution.

Row对象的详细介绍

classsqlite3.RowA Row instance serves as a highly optimized row_factory for Connection objects. It tries to mimic a tuple in most of its features.

It supports mapping access by column name and index, iteration, representation, equality testing and len().

If two Row objects have exactly the same columns and their members are equal, they compare equal.

Changed in version 2.6: Added iteration and equality (hashability).

keys()This method returns a tuple of column names. Immediately after a query, it is the first member of each tuple in Cursor.description.

New in version 2.6.

下面举例说明

In [30]: cx.row_factory = sqlite3.Row

In [31]: c = cx.cursor()

In [32]: c.execute('select * from catalog')

Out[32]:

In [33]: r = c.fetchone()

In [34]: type(r)

Out[34]:

In [35]: r

Out[35]:

In [36]: print r

(0, 10, u'\u9c7c', u'Yu')

In [37]: len(r)

Out[37]: 4

In [39]: r[2] #使用索引查询

Out[39]: u'\u9c7c'

In [41]: r.keys()

Out[41]: ['id', 'pid', 'name', 'nickname']

In [42]: for e in r:

....: print e,

....:

0 10 鱼 Yu

使用列的关键词查询

In [43]: r['id']

Out[43]: 0

In [44]: r['name']

Out[44]: u'\u9c7c'

python数据库操作sqlite_用Python进行SQLite数据库操作相关推荐

  1. python数据库操作sqlite_使用Python对SQLite数据库操作

    原博文 2017-04-05 15:25 − SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在IOS和And ...

  2. python自带模块连接数据库_Python模块Sqlite数据库模块

    Python模块Sqlite数据库模块简介 从Python2.5以后的版本开始引入SQLite,属于Python内置模块,不需要额外安装.Sqlite以小巧快捷著称.SQLite第一个Alpha版本诞 ...

  3. python连接sqlite数据库的代码_Python3实现连接SQLite数据库的方法

    本文实例讲述了Python3实现连接SQLite数据库的方法,对于Python的学习有不错的参考借鉴价值.分享给大家供大家参考之用.具体方法如下: 实例代码如下: import sqlite3 db ...

  4. sqlite数据库加锁提交_如何解锁SQLite数据库?

    如何解锁SQLite数据库? sqlite> DELETE FROM mails WHERE (`id` = 71); SQL error: database is locked 如何解锁数据库 ...

  5. android打开sqlite数据库,Android:打开和关闭SQLite数据库

    我正在开发和android应用程序,我经常使用它访问本地数据库.这个数据库可以从不同的therads访问,所以我对数据库有一个协调问题.我使用以下open()和close()方法.Android:打开 ...

  6. sqlite数据库加锁提交_怎样给sqlite数据库设定密码

    Sqlite数据库的加密1.创建空的sqlite数据库.//数据库名的后缀你可以直接指定,甚至没有后缀都可以//方法一:创建一个空sqlite数据库,用IO的方式FileStream fs = Fil ...

  7. uwp连接mysql数据库_在UWP中使用SQLite数据库,支持加密

    这个库支持Xamarin.*(iOS,Android等). .NET, .NET Core.Mono.UWP等主流系统和程序.支持对数据库文件的加密,其sqlcipher加密版为sqlite-net- ...

  8. 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作

    本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...

  9. 使用iOS原生sqlite3框架对sqlite数据库进行操作

    摘要: iOS中sqlite3框架可以很好的对sqlite数据库进行支持,通过面向对象的封装,可以更易于开发者使用. 使用iOS原生sqlite3框架对sqlite数据库进行操作 一.引言 sqlit ...

  10. 数据存储之 SQLite 数据库操作(三)

    上一讲中我们讲到了SQLite数据库的操作方法 [数据存储之SQLite数据库操作(二)],我们主要是以SQL语句对数据库进行增删改查,这一讲我们来学习一下 Android 建议的对数据库的操作方法 ...

最新文章

  1. Mybatis批量添加对象List
  2. 内存和显存_详谈服务器内存和显存知识
  3. Java基础—反射—简单介绍
  4. QT的系统总结(非常全面)
  5. 利用ioctl获取本机指定设备的MAC地址
  6. [Leedcode][JAVA][第136题][第137题][只出现一次的数字][位运算][HashSet][HashMap]
  7. 庄小威、陈志坚等9位科学家分享2100万美元奖金:2019年科学突破奖公布
  8. c语言程序降低图像分辨率,减少OpenCV读取高分辨率图像的时间示例
  9. mysql 从库开启复制慢日志_Mysql数据库优化之开启慢查询日志
  10. 1000道Python题库系列分享二(48道)
  11. python跳过本次循环_Python的一些格式与逻辑控制语句
  12. Java常见面试题:BIO,NIO,AIO 有什么区别?
  13. 《21天学通Java》(ppt+习题答案+源代码)
  14. ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network
  15. 爬取Whatsapp群链接
  16. mysql用户角色权限表的关系_用户、角色、权限表的关系(mysql)
  17. 解决谷歌Chrome浏览器默认主页被毒霸篡改的问题
  18. 你还不知道高情商表现怎么表现?
  19. 流行音乐混音风格 流行音乐混音的压缩技巧
  20. html5 案例练习(注册页面)

热门文章

  1. Module Zero之语言管理
  2. 一些and知识 和ui
  3. hello!!大家好
  4. 一个果农儿子的心声,你倾听一下吧?
  5. 从web页面请求的历程出发了解计算机网络的基础知识
  6. 第二季-专题3-汇编语言得玩转
  7. 一脸懵逼学习Hive的使用以及常用语法(Hive语法即Hql语法)
  8. 软件吞噬世界之前 SDS还要解决这些问题
  9. 源码推荐:多图无缝滚动控件,多视图控制器间切换
  10. 在 Windows 7 中安装和使用Windows XP Mode