python - Python - 使用 for 循环更新记录
问题描述
首先为基本问题道歉,刚从 Python 开始。
我有以下代码:
import sqlite3
conn = sqlite3.connect("test.sqb")
cursor = conn.cursor()
sql = "SELECT * FROM report WHERE type LIKE 'C%'"
cursor.execute(sql)
data = cursor.fetchall()
for row in data:
print (row[0])
cursor.execute("UPDATE report SET route='ABCDE'")
conn.commit()
conn.close()
为什么它会更新所有记录而不仅仅是来自 sql 查询的过滤记录,即使 print (row[0]) 只显示过滤记录。
非常感谢。
解决方案
实际发生的是您正在为查询返回的每条记录运行此SELECT
查询。
UPDATE report SET route='ABCDE'
如果您只想更新以 C 开头的route
位置type
,请将条件添加到UPDATE
查询并执行一次。
import sqlite3
conn = sqlite3.connect("test.sqb")
cursor = conn.cursor()
sql = "SELECT * FROM report WHERE type LIKE 'C%'"
cursor.execute(sql)
data = cursor.fetchall()
cursor.execute("UPDATE report SET route='ABCDE' WHERE type LIKE 'C%'")
conn.commit()
conn.close()
推荐阅读
- android - 无法运行原生模块官方示例
- scala - Slick 3.3.0 和自定义“def *”投影
- c# - 更改动态类
- 使用 InnerHTML 创建的元素
- c++ - 基本单生产者,单消费者队列。内存未释放
- sql - 使用 SQL Server 的当前文件夹中是否存在文件?
- jenkins-groovy - 如何在数组结构中获得常规的单个值
- hyperledger-fabric - 如何控制参与节点在超级账本结构通道账本上的读写权限?
- angularjs - 组件不接受 camelCase 名称
- javascript - JS中的内存泄漏
- php - 如何从 daterangepicker 为 PHP 变量赋值