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 21 Python
Python去掉字符串中空格的方法
Mar 11 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
python配置grpc环境
Jan 01 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
python global关键字的用法详解
Sep 05 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
解决jupyter notebook import error但是命令提示符import正常的问题
Apr 15 Python
Python sublime安装及配置过程详解
Jun 29 Python
Python与C++中梯度方向直方图的实现
Mar 17 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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
PHP实现验证码校验功能
2017/11/16 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
2019/08/16 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
django框架自定义用户表操作示例
2018/08/07 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
Python创建自己的加密货币的示例
2021/03/01 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
Internet体系结构
2014/12/21 面试题
保护环境倡议书300字
2014/05/19 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
小学生差生评语
2014/12/29 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
会计工作态度自我评价
2015/03/06 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL