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的Django框架中调用方法和处理无效变量
Jul 15 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
python绘制圆柱体的方法
Jul 02 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
Python变量访问权限控制详解
Jun 29 Python
Matplotlib绘制雷达图和三维图的示例代码
Jan 07 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
pyinstaller打包找不到文件的问题解决
Apr 15 Python
Python多个装饰器的调用顺序实例解析
May 22 Python
浅谈django不使用restframework自定义接口与使用的区别
Jul 15 Python
Flask中jinja2的继承实现方法及实例
Mar 03 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
php mail to 配置详解
2014/01/16 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
第一个Vue插件从封装到发布
2017/11/22 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
vuex实现购物车功能
2020/06/28 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
python设置检查点简单实现代码
2014/07/01 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python sys.argv用法实例
2015/05/28 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
python的常用模块之collections模块详解
2018/12/06 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
护士辞职信模板
2014/01/20 职场文书
《最可爱的人》教学反思
2014/02/14 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
党支部对转正的意见
2015/06/02 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS