在Python中使用SQLite的简单教程


Posted in Python onApril 29, 2015

SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。

Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。

在使用SQLite前,我们先要搞清楚几个概念:

表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表,比如学生的表,班级的表,学校的表,等等。表和表之间通过外键关联。

要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection;

连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果。

Python定义了一套操作数据库的API接口,任何数据库要连接到Python,只需要提供符合Python标准的数据库驱动即可。

由于SQLite的驱动内置在Python标准库中,所以我们可以直接来操作SQLite数据库。

我们在Python交互式命令行实践一下:

# 导入SQLite驱动:
>>> import sqlite3
# 连接到SQLite数据库
# 数据库文件是test.db
# 如果文件不存在,会自动在当前目录创建:
>>> conn = sqlite3.connect('test.db')
# 创建一个Cursor:
>>> cursor = conn.cursor()
# 执行一条SQL语句,创建user表:
>>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
<sqlite3.Cursor object at 0x10f8aa260>
# 继续执行一条SQL语句,插入一条记录:
>>> cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
<sqlite3.Cursor object at 0x10f8aa260>
# 通过rowcount获得插入的行数:
>>> cursor.rowcount
1
# 关闭Cursor:
>>> cursor.close()
# 提交事务:
>>> conn.commit()
# 关闭Connection:
>>> conn.close()

我们再试试查询记录:

>>> conn = sqlite3.connect('test.db')
>>> cursor = conn.cursor()
# 执行查询语句:
>>> cursor.execute('select * from user where id=?', '1')
<sqlite3.Cursor object at 0x10f8aa340>
# 获得查询结果集:
>>> values = cursor.fetchall()
>>> values
[(u'1', u'Michael')]
>>> cursor.close()
>>> conn.close()

使用Python的DB-API时,只要搞清楚Connection和Cursor对象,打开后一定记得关闭,就可以放心地使用。

使用Cursor对象执行insert,update,delete语句时,执行结果由rowcount返回影响的行数,就可以拿到执行结果。

使用Cursor对象执行select语句时,通过featchall()可以拿到结果集。结果集是一个list,每个元素都是一个tuple,对应一行记录。

如果SQL语句带有参数,那么需要把参数按照位置传递给execute()方法,有几个?占位符就必须对应几个参数,例如:

cursor.execute('select * from user where id=?', '1')

SQLite支持常见的标准SQL语句以及几种常见的数据类型。具体文档请参阅SQLite官方网站。
小结

在Python中操作数据库时,要先导入数据库对应的驱动,然后,通过Connection对象和Cursor对象操作数据。

要确保打开的Connection对象和Cursor对象都正确地被关闭,否则,资源就会泄露。

如何才能确保出错的情况下也关闭掉Connection对象和Cursor对象呢?请回忆try:...except:...finally:...的用法。

Python 相关文章推荐
Python中条件选择和循环语句使用方法介绍
Mar 13 Python
python基础教程之缩进介绍
Aug 29 Python
Python制作刷网页流量工具
Apr 23 Python
Python操作使用MySQL数据库的实例代码
May 25 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
matplotlib作图添加表格实例代码
Jan 23 Python
使用Python更换外网IP的方法
Jul 09 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
python实现三阶魔方还原的示例代码
Apr 28 Python
在Python中使用poplib模块收取邮件的教程
Apr 29 #Python
python实现简单的socket server实例
Apr 29 #Python
详细讲解用Python发送SMTP邮件的教程
Apr 29 #Python
python实现可将字符转换成大写的tcp服务器实例
Apr 29 #Python
python实现对一个完整url进行分割的方法
Apr 29 #Python
python打开url并按指定块读取网页内容的方法
Apr 29 #Python
在Python下进行UDP网络编程的教程
Apr 29 #Python
You might like
PHP的历史和优缺点
2006/10/09 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
PHP实现简单的计算器
2020/08/28 PHP
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
python获取指定网页上所有超链接的方法
2015/04/04 Python
Python实现的弹球小游戏示例
2017/08/01 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
大学生毕业鉴定
2014/01/31 职场文书
关于期中考试的反思
2014/02/02 职场文书
工程质量承诺书
2014/03/27 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
工作求职自荐信
2014/06/13 职场文书
怎么写工作检讨书
2014/11/16 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
Python实现科学占卜 让视频自动打码
2022/04/09 Python