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使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
使用Python简单的实现树莓派的WEB控制
Feb 18 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
详解Python进程间通信之命名管道
Aug 28 Python
Python面向对象编程基础解析(二)
Oct 26 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
详解python3中zipfile模块用法
Jun 18 Python
django与小程序实现登录验证功能的示例代码
Feb 19 Python
python pandas 时间日期的处理实现
Jul 30 Python
tensorflow 变长序列存储实例
Jan 20 Python
基于python-pptx库中文文档及使用详解
Feb 14 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 checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
浅谈React中组件间抽象
2018/01/27 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
Python简单进程锁代码实例
2015/04/27 Python
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
顶岗实习接收函
2014/01/09 职场文书
校园安全检查制度
2014/02/03 职场文书
《木笛》教学反思
2014/03/01 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
护士自荐信范文
2015/03/25 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
golang 实现两个结构体复制字段
2021/04/28 Golang
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers
Echarts如何重新渲染实例详解
2022/05/30 Javascript