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 def函数的定义、使用及参数传递实现代码
Aug 10 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
Jan 09 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
Python 转换文本编码实现解析
Aug 27 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
PyQt 如何创建自定义QWidget
Mar 24 Python
Python实现天气查询软件
Jun 07 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中用foreach来操作数组的代码
2011/07/17 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
Javascript实现的分页函数
2007/02/07 Javascript
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
python距离测量的方法
2018/03/06 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
Python自定义一个异常类的方法
2019/06/27 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
python实现扫雷游戏
2020/03/03 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
Python datetime模块使用方法小结
2020/06/18 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
最新奶茶店创业计划书范文
2014/02/08 职场文书
教研活动总结
2014/04/28 职场文书
保护环境标语
2014/06/09 职场文书
关爱老人标语
2014/06/21 职场文书
小学运动会演讲稿
2014/08/25 职场文书
趣味运动会赞词
2015/07/22 职场文书
Java实现房屋出租系统详解
2021/10/05 Java/Android