共计 5315 个字符,预计需要花费 14 分钟才能阅读完成。
SQLite 是一种轻量级、无服务器、独立的关系数据库管理系统,由于其简单、高效且占用空间紧凑,在许多应用程序中常用。
本综合指南将探讨如何在 Python 项目中充分利用 SQLite 来深入创建、访问、修改和管理数据库信息。
在 Python 中设置 SQLite
要在 Python 中使用 SQLite,我们首先需要导入 sqlite3 模块。这是 Python 内置的:
import sqlite3
sqlite3 模块提供了从 Python 连接、创建 SQLite 数据库并与之交互所需的所有 API 和工具。
要连接到 SQLite 数据库(如果不存在则创建一个),请使用 sqlite3.connect() 方法:
import sqlite3
db = sqlite3.connect('database.db')
这将打开与数据库文件 database.db 的连接并返回代表数据库的连接对象。如果该文件不存在,SQLite 将自动创建它。
一旦我们完成与数据库的交互,关闭连接是一个很好的做法。这可以通过 close() 方法来完成:
db.close()
创建表
要在 SQLite 中创建表,我们必须执行 CREATE TABLE SQL 语句。这是通过首先从数据库连接获取游标对象来完成的,这使我们能够执行 SQL:
import sqlite3
db = sqlite3.connect('database.db')
cursor = db.cursor()
然后我们可以使用游标的 execute() 方法执行 CREATE TABLE 语句:
cursor.execute("""
CREATE TABLE inventory (
id integer PRIMARY KEY,
name text NOT NULL,
quantity integer,
price real
)
""")
这将创建一个包含 ID、名称、数量和价格列的库存表。请注意,我们定义了每列的数据类型。
执行 SQL 后,必须将更改提交到数据库。这会保留更改:
db.commit()
让我们将其放在一个函数中来封装表创建逻辑:
def create_table(): db = sqlite3.connect('database.db') cursor = db.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS inventory ( id integer PRIMARY KEY, name text NOT NULL, quantity integer, price real ) """)db.commit()
db.close()
我们使用 CREATE TABLE IF NOT EXISTS,因此如果表已经存在,尝试再次创建该表不会导致错误。
插入数据
要将数据插入表中,我们可以再次使用 execute() 方法执行 SQL 语句。SQLite 有一个 INSERT INTO 语句,允许插入新行:
INSERT INTO inventory VALUES (1, 'Bananas', 150, 1.49)
这将插入一个新行,id 为 1,名称为 Bananas,数量为 150,价格为 1.49。
虽然我们可以使用字符串格式插入数据,但更好的方法是使用可以安全地将值与查询分开的查询参数:
data = (2, 'Oranges', 200, 2.49)
cursor.execute("INSERT INTO inventory VALUES (?, ?, ?, ?)", data)
他们?充当值的占位符。这有助于防止 SQL 注入攻击。
我们可以编写一个函数来插入数据:
def insert_data(values): db = sqlite3.connect('database.db') cursor = db.cursor() cursor.execute("INSERT INTO inventory VALUES (?, ?, ?, ?)", values)db.commit()
db.close()
# Usage: insert_data((3, 'Apples', 75, 1.25))
这封装了插入逻辑,同时允许我们干净地将数据作为元组传递。
查看数据
我们可以使用 SELECT 语句从数据库中查询和获取数据。例如,要获取所有行:
SELECT * FROM inventory
我们可以执行此查询,然后使用 cursor.fetchall() 以元组形式检索结果集:
def get_all_data(): db = sqlite3.connect('database.db') cursor = db.cursor() cursor.execute("SELECT * FROM inventory
") rows = cursor.fetchall()db.close()
return rows
这将以元组列表的形式返回完整的结果集,每个元组代表一行及其值。
我们可以将参数传递给 SELECT 查询来过滤结果:
def get_by_name(name): db = sqlite3.connect('database.db') cursor = db.cursor() cursor.execute("SELECT * FROM inventory
WHERE name=?", (name,)) row = cursor.fetchone()db.close()
return row
这允许我们按名称检索特定行。cursor.fetchone() 仅返回第一个结果。
更新数据
要修改现有数据,我们可以使用 UPDATE 语句:
UPDATE inventory SET quantity = 200 WHERE name = 'Bananas'
这会将香蕉的数量更新为 200。
我们可以编写一个函数来处理更新逻辑:
def update_data(new_quantity, name): db = sqlite3.connect('database.db') cursor = db.cursor() cursor.execute("UPDATE inventory SET quantity =? WHERE name=?", (new_quantity, name))db.commit()
db.close()
# Usage: update_data(350, 'Bananas')
与插入类似,这使用查询参数安全地传入值。
删除数据
可以使用 DELETE 语句删除行:
DELETE FROM inventory WHERE name = 'Oranges'
这将删除橙色行。
下面是我们如何实现删除功能:
def delete_data(name): db = sqlite3.connect('database.db') cursor = db.cursor() cursor.execute("DELETE FROM inventory WHERE name=?", (name,))db.commit()
db.close()
# Usage: delete_data('Oranges')
同样,使用查询参数可以避免漏洞并使代码更易于维护。
使用 Sqlite3 构建
首先,请在此处克隆存储库并按照教程进行操作。尽管这是初学者课程,但您必须对 SQL 有一点了解才能完成。
第一步是导入 sqlite3 模块:
import sqlite3
这使我们能够访问 Python 中的所有 SQLite 数据库功能。
创建表
接下来,定义 create_table() 函数来创建一个名为 store 的表,其中包含项目、数量和价格列:
def create_table():
new_data = sqlite3.connect('data_base1')
change = new_data.cursor()
change.execute("CREATE TABLE IF NOT EXISTS store (item TEXT, quantity INTEGER, price REAL)")
new_data.commit()
new_data.close()
分解一下:
-
sqlite3.connect() 打开到数据库文件的连接。
-
new_data.cursor() 获取一个游标对象来执行 SQL。
-
execute() 运行 CREATE TABLE 查询。
-
commit() 保存更改。
-
close() 关闭连接。
插入数据
item() 函数处理将数据插入表中:
def item(item, quantity, price):
new_data = sqlite3.connect('data_base1')
change = new_data.cursor()
change.execute("INSERT INTO store VALUES(?,?,?)", (item, quantity, price))
new_data.commit()
new_data.close()
它以项目、数量和价格作为参数。INSERT 查询使用占位符 ? 将这些值安全地插入到新行中。
查看数据
为了查询数据,定义了 view() 函数:
def view():
new_data = sqlite3.connect('data_base1')
change = new_data.cursor()
change.execute("SELECT * FROM store")
rows = change.fetchall()
change.close()
return rows
它使用 SELECT * 选择所有行,使用 fetchall() 获取结果,然后返回它们。
删除数据
要按项目名称删除行,请使用 delete() 函数:
def delete(item):
new_data = sqlite3.connect('data_base1')
change = new_data.cursor()
change.execute("DELETE FROM store WHERE item =?", (item,))
new_data.commit()
new_data.close()
WHERE 子句通过项目名称标识要删除的行。
更新数据
最后,update() 可以修改给定商品的数量和价格:
def update(quantity, price, item):
new_data = sqlite3.connect('data_base1')
change = new_data.cursor()
change.execute("UPDATE store SET quantity =?, price =? WHERE item=?",
(quantity, price, item))
new_data.commit()
new_data.close()
SET 子句指定要更新的列,WHERE 标识行。
包起来
总之,在 Python 中使用 SQLite 数据库的关键步骤是:
-
将 sqlite3 模块导入到您的项目中。
-
使用 sqlite3.connect() 创建数据库连接。
-
从连接中获取游标来执行 SQL 语句。
-
构造 SQL 查询并使用游标来执行它们。
-
对于插入、更新和删除 – 提交更改以保留它们。
-
对于查询,使用 cursor.fetchone() 或 cursor.fetchall() 来检索结果。
-
完成后关闭数据库连接。
-
使用查询参数而不是连接值来避免 SQL 注入。
-
将数据库逻辑和查询封装在函数中以实现可重用。
有了这些概念,您就可以利用 SQLite 和 Python 的强大功能构建强大的应用程序。SQLite3 模块和 SQL 使您可以完全控制创建、修改和查询数据库信息。
SQLite 支持更高级的功能,如事务、隔离级别、备份和加密。请务必参阅官方 SQLite 文档以利用完整功能。
我希望这份综合指南能让您全面了解如何将 SQLite 集成到您的 Python 项目中!如果您还有其他问题,请告诉我。
我希望您喜欢阅读本指南,并有动力开始您的 Python 编程之旅。
如果你喜欢我的工作并且想帮助我继续删除这样的内容,请给我买杯 咖啡。 文章来源:https://www.toymoban.com/diary/python/396.html
文章来源地址 https://www.toymoban.com/diary/python/396.html
到此这篇关于 SQLite 与 Python,Python 项目中充分利用 SQLite 的综合指南的文章就介绍到这了, 更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持 TOY 模板网!