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操作MongoDB基础知识
Nov 01 Python
python 默认参数问题的陷阱
Feb 29 Python
Python的地形三维可视化Matplotlib和gdal使用实例
Dec 09 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
python随机模块random使用方法详解
Feb 14 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 Python
如何在python中实现ECDSA你知道吗
Nov 23 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
php代码运行时间查看类代码分享
2011/08/06 PHP
Php图像处理类代码分享
2012/01/19 PHP
php设置允许大文件上传示例代码
2014/03/10 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
layui动态加载多表头的实例
2019/09/05 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
基于python检查矩阵计算结果
2020/05/21 Python
几道Web/Ajax的面试题
2016/11/05 面试题
上课打牌的检讨书
2014/02/15 职场文书
机械操作工岗位职责
2014/08/08 职场文书
群教个人对照检查材料
2014/08/20 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
通知的格式范文
2015/04/27 职场文书
详解SQL的窗口函数
2022/04/21 Oracle