本文实例讲述了Python操作SQLite数据库的方法。分享给大家供大家参考,具体如下:

SQLite简单介绍
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对象的详细介绍
class sqlite3.Row
A 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]: <sqlite3.Cursor object at 0x05666680>
In [33]: r = c.fetchone()
In [34]: type(r)
Out[34]: <type 'sqlite3.Row'>
In [35]: r
Out[35]: <sqlite3.Row object at 0x05348980>
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相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python编码操作技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
# Python
# 操作
# SQLite数据库
# Python3实现连接SQLite数据库的方法
# python 操作sqlite数据库的方法
# Python SQLite3数据库操作类分享
# Python读取sqlite数据库文件的方法分析
# Python开发SQLite3数据库相关操作详解【连接
# 查询
# 插入
# 更新
# 删除
# 关闭等】
# 使用Python对SQLite数据库操作
# Python操作SQLite数据库的方法详解【导入
# 创建
# 游标
# 增删改查等】
# Python版SQLite数据库从入门到综合运用案例(附详细演示)
# 关键词
# 操作技巧
# 创建一个
# 多条
# 开源
# 中取
# 的是
# 进阶
# 数据库管理系统
# 相关内容
# 第一个
# 也要
# 不可以
# 只需
# 它是
# 感兴趣
# 请先
# 数据结构
# 给大家
# 并将
相关文章:
javascript中的try catch异常捕获机制用法分析
中山网站制作网页,中山新生登记系统登记流程?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
,怎么在广州志愿者网站注册?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何通过商城自助建站源码实现零基础高效建站?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
微信推文制作网站有哪些,怎么做微信推文,急?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
北京专业网站制作设计师招聘,北京白云观官方网站?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
建站之星Pro快速搭建教程:模板选择与功能配置指南
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
建站主机选虚拟主机还是云服务器更好?
模具网站制作流程,如何找模具客户?
太原网站制作公司有哪些,网约车营运证查询官网?
MySQL查询结果复制到新表的方法(更新、插入)
深圳网站制作培训,深圳哪些招聘网站比较好?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
招贴海报怎么做,什么是海报招贴?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
如何快速搭建高效WAP手机网站?
电商网站制作公司有哪些,1688网是什么意思?
南平网站制作公司,2025年南平市事业单位报名时间?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何选择最佳自助建站系统?快速指南解析优劣
建站主机选哪种环境更利于SEO优化?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
如何基于云服务器快速搭建网站及云盘系统?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
建站VPS选购需注意哪些关键参数?
小建面朝正北,A点实际方位是否存在偏差?
c++ stringstream用法详解_c++字符串与数字转换利器
建站主机SSH密钥生成步骤及常见问题解答?
如何快速搭建响应式可视化网站?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
如何在香港服务器上快速搭建免备案网站?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
建站之星安装步骤有哪些常见问题?
h5网站制作工具有哪些,h5页面制作工具有哪些?
宝塔建站无法访问?如何排查配置与端口问题?
英语简历制作免费网站推荐,如何将简历翻译成英文?
西安大型网站制作公司,西安招聘网站最好的是哪个?
如何在服务器上配置二级域名建站?
*服务器网站为何频现安全漏洞?
*请认真填写需求信息,我们会在24小时内与您取得联系。