SQLite 是一个轻量级的数据库引擎,它不需要单独的服务器进程,而是直接访问其存储文件。Python 提供了 sqlite3
模块,使得在 Python 程序中操作 SQLite 数据库变得非常简单。
sqlite3
模块提供了简洁的 API。SQLite 支持多种数据类型,包括:
SQLite 适用于小型应用、嵌入式系统、移动应用等,特别是在需要轻量级数据库解决方案的场景中。
在 Python 中使用 SQLite 进行查询时,可以通过参数化查询来防止 SQL 注入攻击。以下是一个示例代码:
import sqlite3
# 连接到 SQLite 数据库(如果数据库不存在,则会自动创建)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 创建一个示例表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL
)
''')
# 插入一些示例数据
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Alice', 'alice@example.com'))
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Bob', 'bob@example.com'))
conn.commit()
# 查询数据并传递参数
search_name = 'Alice'
cursor.execute("SELECT * FROM users WHERE name = ?", (search_name,))
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
cursor.close()
conn.close()
原因:直接将用户输入拼接到 SQL 查询中,可能导致 SQL 注入攻击。
解决方法:使用参数化查询(如上例中的 ?
占位符)。
原因:忘记关闭数据库连接,可能导致资源泄漏。
解决方法:确保在程序结束前关闭数据库连接。
cursor.close()
conn.close()
原因:插入的数据类型与表定义的数据类型不匹配。
解决方法:确保插入的数据类型与表定义的数据类型一致。
通过以上内容,你应该能够理解如何在 Python 中通过 SQLite 进行查询并传递参数,以及如何解决一些常见问题。
领取专属 10元无门槛券
手把手带您无忧上云