SQLite 是一个嵌入式数据库,它的数据库是一个文件。由于 SQLite 本身是用 C 编写的,而且体积很小,因此它经常被集成到各种应用程序中,甚至在 iOS 和 Android 应用程序中。 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()
</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 语句时,可以通过 fetchall() 获取结果集。结果集是一个列表,每个元素是一个元组,对应一行记录。
如果 SQL 语句有参数,则需要将参数按位置传递给 execute() 方法。有几个?占位符必须对应几个参数,例如:
cursor.execute('select * from user where id=?', '1')
SQLite 支持常见的标准 SQL 语句以及几种常见的数据类型。具体文档请参考SQLite官网。
小结
在Python中操作数据库时,必须先导入数据库对应的驱动,然后通过Connection对象和Cursor对象来操作数据。
确保打开的 Connection 对象和 Cursor 对象正确关闭,否则会导致资源泄漏。
我们如何确保 Connection 对象和 Cursor 对象在发生错误时也关闭?请回想一下 try:...except:...finally:... 的用法。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 庆祝胖五发射成功,让我们用Python来发射火箭吧!12/19
- ♥ 如何在python中找到数字的平方09/11
- ♥ python加载dicom图片的方法12/01
- ♥ 如何设置python绘图的横坐标?08/25
- ♥ 教你如何用Python处理Excel表格09/11
- ♥ 如何掌握python中的AdaBoost算法?01/04
内容反馈