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中from module import * 的一个坑
Jul 20 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
Python实现识别手写数字大纲
Jan 29 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
Python异步操作MySQL示例【使用aiomysql】
May 16 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
python实现对变位词的判断方法
Apr 05 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
解决Django Haystack全文检索为空的问题
May 19 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
python实现图片批量压缩
Apr 24 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
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
详解jQuery-each()方法
2019/03/13 jQuery
深入学习JavaScript中的bom
2019/05/27 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
使用pandas读取文件的实现
2019/07/31 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
django 模型字段设置默认值代码
2020/07/15 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
PHP开发的一般流程
2013/08/13 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
java程序员面试交流
2012/11/29 面试题
高中生校园生活自我评价
2013/09/19 职场文书
实习自我鉴定模板
2013/09/28 职场文书
企业管理培训感言
2014/01/27 职场文书
致长跑运动员广播稿
2014/01/31 职场文书
服务理念口号
2014/06/11 职场文书
工作总结与自我评价
2014/09/18 职场文书
校长新学期致辞
2015/07/30 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL