gpt4 book ai didi

python - 使用 Python For 循环更新 MySQL 数据库不起作用

转载 作者:行者123 更新时间:2023-11-29 05:02:41 26 4
gpt4 key购买 nike

我正在尝试通过特定文本文件中的设备列表循环将数据从“事件”更新为“停用”。

然而,不知何故,它没有从文本文件中过滤设备列表并更新相应的数据,根本没有对数据库进行任何更改。

会不会跟我想出来的for语句或者mysql语句有关?不管我修了多少次MYSQL,结果都是一样的。

可能是什么问题?

请查看下面的代码,看看我是否在 MYSQL 方面或 Python 方面犯了任何错误。

预先感谢您的大力帮助。非常感激。

import pyodbc 
conn = pyodbc.connect('Driver={SQL Server};'
'Server=############;'
'Database=########;'
'Trusted_Connection=yes;')



cursor = conn.cursor()
cursor.execute('SELECT id, device_id, model_number, serial_number_1,\
status_1, user_name_1 FROM [Footprint].[fpscdb001_cmdb_004].[desktop]')

results = []
with open('H:\list.txt') as inputfile:
results = inputfile.read().splitlines()

SQL = """UPDATE [Footprint].[fpscdb001_cmdb_004].[desktop]
SET status_1 = "Retired"
WHERE device_id == %s"""

try:
for i in results:
cursor.execute(SQL, results[i])
cursor.commit()
# print(rowcount)

except:
conn.rollback()

finally:
conn.close()

最佳答案

看起来问题出在您的 SQL 和 Python 上。

您的 SQL 在这部分有问题:WHERE device_id == %s。在 SQL 中,没有 ==。相反,您使用单个 = 来设置和检查值。您应该使用 WHERE device_id = ?

此外,您正在使用 %s 作为查询中的占位符。我不熟悉 pyodbc,但快速查看文档看起来您应该使用 ? 作为占位符。

那么试试这个:

SQL = """UPDATE [Footprint].[fpscdb001_cmdb_004].[desktop]
SET status_1 = "Retired"
WHERE device_id = ?"""

关于python - 使用 Python For 循环更新 MySQL 数据库不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54990977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com