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基本数据类型详细介绍
Mar 11 Python
python打开网页和暂停实例
Sep 30 Python
Python实现的桶排序算法示例
Nov 29 Python
Java及python正则表达式详解
Dec 27 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
python函数修饰符@的使用方法解析
Sep 02 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
python爬虫库scrapy简单使用实例详解
Feb 10 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
Python3与fastdfs分布式文件系统如何实现交互
Jun 23 Python
python 下划线的多种应用场景总结
May 12 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 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中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
python实现批量监控网站
2016/09/09 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
用python生成1000个txt文件的方法
2018/10/25 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
python压包的概念及实例详解
2021/02/17 Python
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
酒店销售主管岗位职责
2014/01/04 职场文书
小学新学期教师寄语
2014/01/18 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
作弊检讨书范文
2015/05/06 职场文书
教师个人教学反思
2016/02/23 职场文书
如何用python插入独创性声明
2021/03/31 Python
Nginx实现负载均衡的项目实践
2022/03/18 Servers