Python SQLite3 数据库操作入门:连接、建表与增删改查
本文介绍如何在 Python 中使用内置的 sqlite3 模块进行数据库开发。内容涵盖创建数据库连接、在内存或文件中存储数据、创建数据表,以及执行 INSERT、SELECT、UPDATE 和 DELETE 等核心 SQL 操作。通过具体代码示例,帮助开发者快速掌握 SQLite3 在 Python 中的实际应用。
近期在开发简易通讯录应用时,面临数据存储方案的选择难题。虽然可以使用 Python 的列表或字典暂存数据,但这种方式缺乏持久性和可靠性。因此,探索 Python 内置的数据库模块成为更优的解决方案。
SQLite3 简介
Python 通过 sqlite3 模块与 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。若数据库创建成功,终端将显示相应的成功消息。
$chmod +x sqlite.py $./sqlite.py Open database successfully
创建表
以下 Python 代码片段用于在之前创建的数据库中建立数据表结构。
#-*- coding:utf-8 -*-
import sqlite3
conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";
conn.execute('''CREATE TABLE MT
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''')
print "Table created successfully";
conn.close()
执行上述程序后,会在 test.db 中创建 MT 表,并输出如下提示信息。
Opened database successfully Table created successfully
INSERT 操作
下面的 Python 程序演示了如何向已创建的 MT 表中插入新记录。
#-*- coding:utf-8 -*-
import sqlite3
conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (1, 'Paul', 32, 'California', 20000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");
conn.commit()
print "Records created successfully";
conn.close()
运行该程序后,指定的记录将被添加到 MT 表中,并显示以下两行输出信息。
Opened database successfully Records created successfully
SELECT 操作
以下 Python 程序展示了如何从之前创建的 MT 表中检索并显示记录。
#-*- coding:utf-8 -*-
import sqlite3
conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";
cursor = conn.execute("SELECT id, name, address, salary from MT")
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
执行上述程序后,将产生如下查询结果。
Opened database successfully ID = 1 NAME = Paul ADDRESS = California SALARY = 20000.0 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000.0 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000.0 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000.0 Operation done successfully
UPDATE 操作
下面的 Python 代码演示了如何使用 UPDATE 语句更新现有记录,随后从 COMPANY 表中检索并显示更新后的数据。
#-*- coding:utf-8 -*-
import sqlite3
conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";
conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit()
print "Total number of rows updated :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from MT")
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
运行该程序后,将输出如下更新结果。
Opened database successfully Total number of rows updated : 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 25000.0 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000.0 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000.0 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000.0 Operation done successfully
DELETE 操作
以下 Python 代码展示了如何使用 DELETE 语句删除特定记录,随后从 COMPANY 表中检索并显示剩余的记录。
#-*- coding:utf-8 -*-
import sqlite3
conn = sqlite3.connect('mysql_person.db')
print "Opened database successfully";
conn.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from MT")
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
执行上述程序后,将产生如下删除后的查询结果。
Opened database successfully Total number of rows deleted : 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 20000.0 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000.0 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000.0 Operation done successfully
本文涵盖了 SQLite3 在 Python 中的基本使用方法,希望能为读者提供有益参考。欢迎继续支持本站获取更多技术内容。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









