Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】


Posted in Python onJuly 11, 2017

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

SQLite简介

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

SQLite数据库的使用

1.导入Python SQLite数据库模块

python2.5版本以后内置SQLite数据库

import sqlite3

2. 创建/打开数据库

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

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

或者也可以在内存中创建

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

3.数据库连接对象

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

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

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

4.使用游标查询数据库

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

cu=conn.cursor()

游标对象有以下的操作:

execute()--执行sql语句
executemany--执行多条sql语句
close()--关闭游标
fetchone()--从结果中取一条记录,并将游标指向下一条记录
fetchmany()--从结果中取多条记录
fetchall()--从结果中取出所有记录
scroll()--游标滚动

SQLite数据库操作

1. 创建数据库表

cu.execute("create table user (id integer primary key,name varchar(20) UNIQUE,age integer,comment text NULL)")
# 创建一张user表,表中有id(主键),名字(唯一),年龄,备注(默认为空)

2. 插入数据

请注意避免以下写法:

# 这样写会导致注入攻击
pid=200
c.execute("... where id= '%s'" % id)

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

for user in[(0,'aaa',111,'aaaa'),(1,'bbb',222,'bbbb')]:
 conn.execute("insert into user values (?,?,?,?)", user) # 注意user是元组,不可变
conn.commit() # 注意插入操作之后要进行提交

3. 查询数据

cu.execute("select * from user")
cu.fetchone() # 得到游标的第一个值
cu.execute("select * from user")
cu.fetchall() # 使用游标的fetch函数,fetchall得到所有的查询记录

4. 修改数据

cu.execute("update user set name='ccc' where id = 0")
conn.commit()

5. 删除数据

cu.execute("delete from user where id = 1")
conn.commit()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python多进程机制实例详解
Jul 02 Python
Python多线程下载文件的方法
Jul 10 Python
Python 40行代码实现人脸识别功能
Apr 02 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
Python实现登录接口的示例代码
Jul 21 Python
python实现教务管理系统
Mar 12 Python
Python延时操作实现方法示例
Aug 14 Python
Python数据存储之 h5py详解
Dec 26 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
python 常见的排序算法实现汇总
Aug 21 Python
Python 内存管理机制全面分析
Jan 16 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 Python
python处理按钮消息的实例详解
Jul 11 #Python
python 创建弹出式菜单的实现代码
Jul 11 #Python
在Python中使用AOP实现Redis缓存示例
Jul 11 #Python
浅谈python import引入不同路径下的模块
Jul 11 #Python
python 环境变量和import模块导入方法(详解)
Jul 11 #Python
Python编写登陆接口的方法
Jul 10 #Python
CentOS中升级Python版本的方法详解
Jul 10 #Python
You might like
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
Python与Redis的连接教程
2015/04/22 Python
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
python实现超市扫码仪计费
2018/05/30 Python
python中的协程深入理解
2019/06/10 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
幼儿园校车司机的岗位职责
2014/01/30 职场文书
八年级美术教学反思
2014/02/02 职场文书
采购部部长岗位职责
2014/02/06 职场文书
党在我心中演讲稿
2014/09/02 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
2014小学年度工作总结
2014/12/20 职场文书
2015年团支书工作总结
2015/04/03 职场文书
军训后的感想
2015/08/07 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
python opencv旋转图片的使用方法
2021/06/04 Python
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang