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的web.py框架下的application.py模块
May 02 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
Python实现识别图片内容的方法分析
Jul 11 Python
python实现点对点聊天程序
Jul 28 Python
基于python中theano库的线性回归
Aug 31 Python
使用matplotlib绘制图例标签中带有公式的图
Dec 13 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 Python
详解用selenium来下载小姐姐图片并保存
Jan 26 Python
python分分钟绘制精美地图海报
Feb 15 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 设置MySQL连接字符集的方法
2011/01/02 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
取选中的radio的值
2010/01/11 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
更改Ubuntu默认python版本的两种方法python-> Anaconda
2016/12/18 Python
Python线程指南详细介绍
2017/01/05 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
Django 框架模型操作入门教程
2019/11/05 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
数控专业毕业生求职信范文
2013/09/21 职场文书
新任教师自我鉴定
2014/02/24 职场文书
教研活动主持词
2015/07/03 职场文书
开业庆典致辞
2015/08/01 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书