在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中创建字典的几种方法总结(推荐)
Apr 27 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
python实现事件驱动
Nov 21 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
python 定时任务去检测服务器端口是否通的实例
Jan 26 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
python__name__原理及用法详解
Nov 02 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
Python模块相关知识点小结
Mar 09 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
用python实现名片管理系统
Jun 18 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
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
vue中使用protobuf的过程记录
2018/10/26 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
tensorflow识别自己手写数字
2018/03/14 Python
Python查看微信撤回消息代码
2018/06/07 Python
python处理csv中的空值方法
2018/06/22 Python
深入学习python多线程与GIL
2019/08/26 Python
Python如何读取文件中图片格式
2020/01/13 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
财务总监管理岗位职责
2014/03/08 职场文书
水电施工员岗位职责
2015/04/11 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
国情备忘录观后感
2015/06/04 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
总结Python变量的相关知识
2021/06/28 Python
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers