在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 相关文章推荐
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 Python
python字典排序的方法
Oct 12 Python
python 实现目录复制的三种小结
Dec 04 Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
python如何快速拼接字符串
Oct 28 Python
python 实现弹球游戏的示例代码
Nov 17 Python
python实现简单倒计时功能
Apr 21 Python
Python趣味挑战之教你用pygame画进度条
May 31 Python
Python中的 Set 与 dict
Mar 13 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
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
three.js 入门案例详解
2018/01/23 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
python实现爬虫下载漫画示例
2014/02/16 Python
python使用循环实现批量创建文件夹示例
2014/03/25 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
python+os根据文件名自动生成文本
2019/03/21 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
python区分不同数据类型的方法
2019/10/14 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
python实现udp聊天窗口
2020/03/31 Python
利用python生成照片墙的示例代码
2020/04/09 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
大学生期末自我鉴定
2014/02/01 职场文书
初级会计求职信范文
2014/02/15 职场文书
签约仪式主持词
2014/03/19 职场文书
法制宣传教育方案
2014/05/09 职场文书
个人安全生产责任书
2014/07/28 职场文书
公司外出活动方案
2014/08/14 职场文书
银行授权委托书样本
2014/10/13 职场文书