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实现根据ip地址反向查找主机名称的方法
Apr 29 Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
python实现人脸识别代码
Nov 08 Python
Python根据文件名批量转移图片的方法
Oct 21 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
基于python实现检索标记敏感词并输出
May 07 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
解决Keras 中加入lambda层无法正常载入模型问题
Jun 16 Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 Python
jupyter notebook 写代码自动补全的实现
Nov 02 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中实现Javascript的escape()函数代码
2010/08/08 PHP
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
php 问卷调查结果统计
2015/10/08 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
详解A标签中href=""的几种用法
2017/08/20 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
vue2单元测试环境搭建
2018/05/24 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
wxPython窗口的继承机制实例分析
2014/09/28 Python
Python实现合并字典的方法
2015/07/07 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
文明社区申报材料
2014/08/21 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
升职感谢信
2015/01/22 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript
零基础学java之循环语句的使用
2022/04/10 Java/Android
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript