Python中SQLite如何使用


Posted in Python onMay 27, 2020

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\')')
# 通过rowcount获得插入的行数:
>>> cursor.rowcount
1
# 关闭Cursor:
>>> cursor.close()
# 提交事务:
>>> conn.commit()
# 关闭Connection:
>>> conn.close()
</sqlite3.cursor></sqlite3.cursor>

我们再试试查询记录:

>>> 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()
</sqlite3.cursor>

使用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:...的用法。

知识点扩充

SQLite3简介

SQLite3 可使用 sqlite3 模块与 Python 进行集成。sqlite3 模块是由 Gerhard Haring 编写的。它提供了一个与 PEP 249 描述的 DB-API 2.0 规范兼容的 SQL 接口。您不需要单独安装该模块,因为 Python 2.5.x 以上版本默认自带了该模块。
为了使用 sqlite3 模块,您首先必须创建一个表示数据库的连接对象,然后您可以有选择地创建光标对象,这将帮助您执行所有的 SQL 语句。

怎么样,听起来不错吧!那就快来学习使用吧。

连接数据库

下面的 Python 代码显示了如何连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,最后将返回一个数据库对象。

#-*- coding:utf-8 -*-
import sqlite3
conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";

在这里,您也可以把数据库名称复制为特定的名称 :memory:,这样就会在 RAM 中创建一个数据库。现在,让我们来运行上面的程序,在当前目录中创建我们的数据库 mysql_person.db。您可以根据需要改变路径。保存上面代码到 sqlite.py 文件中,并按如下所示执行。如果数据库成功创建,那么会显示下面所示的消息:

$chmod +x sqlite.py
$./sqlite.py
Open database successfully

到此这篇关于Python中SQLite如何使用的文章就介绍到这了,更多相关Python中SQLite的简单应用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python插入排序算法的实现代码
Nov 21 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
Pyinstaller将py打包成exe的实例
Mar 31 Python
python3实现多线程聊天室
Dec 12 Python
python中如何使用分步式进程计算详解
Mar 22 Python
tensorflow之并行读入数据详解
Feb 05 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
如何利用Python识别图片中的文字
May 31 Python
python中什么是面向对象
Jun 11 Python
Python matplotlib绘制雷达图
Apr 13 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 #Python
Python中如何引入第三方模块
May 27 #Python
Python中的wordcloud库安装问题及解决方法
May 27 #Python
Python Dataframe常见索引方式详解
May 27 #Python
Python代码中如何读取键盘录入的值
May 27 #Python
python神经网络编程实现手写数字识别
May 27 #Python
python安装和pycharm环境搭建设置方法
May 27 #Python
You might like
php中文本数据翻页(留言本翻页)
2006/10/09 PHP
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
js的匿名函数使用介绍
2013/12/11 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
详解Python 数据库的Connection、Cursor两大对象
2018/06/25 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
助理政工师申报材料
2014/06/03 职场文书
小学班级标语口号大全
2015/12/26 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers
Java使用HttpClient实现文件下载
2022/08/14 Java/Android