Python SQLite 更新数据
简介
SQLite 是一个轻量级的数据库,用于在应用程序中存储和管理数据。Python 作为一种流行的编程语言,提供了对 SQLite 数据库进行操作的支持。本文将详细介绍如何使用 Python 更新 SQLite 数据库中的数据。
准备工作
在开始之前,需要确保你已经安装了 Python 和 SQLite3 模块。可以使用以下命令检查是否已安装 SQLite3 模块:
import sqlite3
print(sqlite3.sqlite_version)
如果你没有安装该模块,可以使用以下命令在终端中安装:
pip install sqlite3
当准备工作完成后,我们可以开始更新 SQLite 数据库中的数据。
打开数据库连接
首先,我们需要打开一个与数据库的连接,并获取一个游标(cursor),该游标用于执行 SQL 语句并获得返回的结果。以下是一个打开数据库连接的示例代码:
import sqlite3
# 打开数据库连接
conn = sqlite3.connect('test.db')
# 获取游标
cursor = conn.cursor()
更新数据
我们可以使用 SQL UPDATE 语句来更新数据库中的数据。以下是一个更新数据的示例代码:
import sqlite3
# 打开数据库连接
conn = sqlite3.connect('test.db')
# 获取游标
cursor = conn.cursor()
# 定义更新语句
sql = "UPDATE employees SET salary = 5000 WHERE id = 1"
try:
# 执行更新语句
cursor.execute(sql)
# 提交事务
conn.commit()
print("数据更新成功!")
except Exception as e:
# 发生错误时回滚
conn.rollback()
print("数据更新失败!", e)
# 关闭数据库连接
conn.close()
在上面的示例代码中,我们使用 UPDATE 语句将 id 为 1 的员工的薪水更新为 5000。执行更新语句后,需要调用 commit()
方法提交事务,使更改生效。如果发生错误,可以使用 rollback()
方法回滚事务,使更改被撤销。
更新多个数据
如果我们要更新多个数据记录,可以在 SQL UPDATE 语句中使用 WHERE 子句来指定条件。以下是一个更新多个数据的示例代码:
import sqlite3
# 打开数据库连接
conn = sqlite3.connect('test.db')
# 获取游标
cursor = conn.cursor()
# 定义更新语句
sql = "UPDATE employees SET salary = salary + 1000 WHERE department = 'IT'"
try:
# 执行更新语句
cursor.execute(sql)
# 提交事务
conn.commit()
print("数据更新成功!")
except Exception as e:
# 发生错误时回滚
conn.rollback()
print("数据更新失败!", e)
# 关闭数据库连接
conn.close()
在上面的示例代码中,我们使用 UPDATE 语句将部门为 “IT” 的员工的薪水增加 1000。执行更新语句后,将薪水增加的操作放在赋值表达式中。
提示
在更新数据时,可以使用 execute()
方法的第二个参数来传递参数。这样可以避免 SQL 注入的风险。以下是一个使用参数的示例代码:
import sqlite3
# 打开数据库连接
conn = sqlite3.connect('test.db')
# 获取游标
cursor = conn.cursor()
# 定义更新语句
sql = "UPDATE employees SET salary = ? WHERE id = ?"
try:
# 执行更新语句
cursor.execute(sql, (5000, 1))
# 提交事务
conn.commit()
print("数据更新成功!")
except Exception as e:
# 发生错误时回滚
conn.rollback()
print("数据更新失败!", e)
# 关闭数据库连接
conn.close()
在上面的示例代码中,我们使用问号作为占位符,然后通过元组 (5000, 1)
传递参数。这样可以确保传递的参数被正确地转义和引用,从而避免 SQL 注入的风险。
总结
本文介绍了如何使用 Python 更新 SQLite 数据库中的数据。首先,我们打开与数据库的连接并获取游标,然后使用 SQL UPDATE 语句来更新数据。我们还了解了如何更新多个数据记录以及如何使用参数来避免 SQL 注入的风险。