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中的yield使用方法
Feb 11 Python
python在windows下实现备份程序实例
Jul 04 Python
python通过colorama模块在控制台输出彩色文字的方法
Mar 19 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
May 31 Python
python读写LMDB文件的方法
Jul 02 Python
Python 访问限制 private public的详细介绍
Oct 16 Python
python实现socket+threading处理多连接的方法
Jul 23 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
python Scrapy框架原理解析
Jan 04 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 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网站在线人数统计
2008/04/09 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
PHP最常用的正则表达式
2017/02/13 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
JavaScript定时器设置、使用与倒计时案例详解
2019/07/08 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Python之用户输入的实例
2018/06/22 Python
Python logging模块用法示例
2018/08/28 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
python图片合成的示例
2020/11/09 Python
HTML5 新事件 小结
2009/07/16 HTML / CSS
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
后勤部长岗位职责
2013/12/14 职场文书
三八节主持词
2014/03/17 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
公司授权委托书
2014/04/04 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
签约仪式致辞
2015/07/30 职场文书
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python