在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的Tornado框架实现一个一对一聊天的程序
Apr 25 Python
深入理解Python中命名空间的查找规则LEGB
Aug 06 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
Django1.9 加载通过ImageField上传的图片方法
May 25 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
分享Python切分字符串的一个不错方法
Dec 14 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
Puppeteer使用示例详解
Jun 20 Python
关于Numpy中的行向量和列向量详解
Nov 30 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
python 监控logcat关键字功能
Sep 04 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进行MySQL删除记录操作代码
2008/06/07 PHP
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
PHP生成压缩文件实例
2015/02/07 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
PDO::errorInfo讲解
2019/01/28 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
Javascript 面试题随笔
2011/03/31 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python冒泡排序简单实现方法
2015/07/09 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
成功的酒店创业计划书
2013/12/27 职场文书
会计自我鉴定
2014/02/04 职场文书
企业年检委托书范本
2014/10/14 职场文书
商务英语求职信范文
2015/03/19 职场文书
对讲机知识
2022/04/07 无线电
apache ftpserver搭建ftp服务器
2022/05/20 Servers