Python 获取错误类型错误:';int';对象是不可编辑的
我们正在研究人脸识别。我的for循环有问题。它会产生错误 TypeError:“int”对象不可编辑 代码Python 获取错误类型错误:';int';对象是不可编辑的,python,Python,我们正在研究人脸识别。我的for循环有问题。它会产生错误 TypeError:“int”对象不可编辑 代码 mycursor = connect.cursor() cmd = "SELECT * FROM students WHERE ID = " + Id cursors = mycursor.execute(cmd) isRecordExist = 0 for row in cursors:
mycursor = connect.cursor()
cmd = "SELECT * FROM students WHERE ID = " + Id
cursors = mycursor.execute(cmd)
isRecordExist = 0
for row in cursors:
isRecordExist = 1 //HERE IS THE LINE WHERE THE ERROR IS
if isRecordExist == 1:
mycursor.execute("UPDATE students SET Name = ? WHERE ID = ?",(Name, Id))
mycursor.execute("UPDATE students SET Roll = ? WHERE ID = ?",(roll, Id))
else:
params = (Id, Name, roll)
mycursor.execute("INSERT INTO students(ID, Name, Roll) VALUES(?, ?, ?)", params)
connect.commit()
connect.close()
错误
输入学生姓名:jom
输入学生卷号:15
回溯(最近一次呼叫最后一次):
文件“C:\Users\Shownu\Desktop\AutoAttention认知主机\add\u student.py”,第33行,在
insertOrUpdate(Id、名称、卷号)
文件“C:\Users\Shownu\Desktop\AutoAttention认知主机\add_student.py”,第19行,插入更新
对于游标中的行:
TypeError:“int”对象不可编辑
请指定代码使用的特定驱动程序。假设SQLITE3DB连接的示例
db_conn = sqlite3.connect('mydbfile.db')
mycursor = db_conn.cursor()
然后
您的问题是没有正确使用API。在pythodbapi中,execute调用不返回行。它返回受影响的行数。见例 用于MySQL API 相反,您必须迭代游标对象本身
cmd = "SELECT * FROM students WHERE ID = " + Id
mycursor.execute(cmd)
for row in mycursor:
...
根据,execute方法返回None
execute(查询,vars=None)
执行数据库操作(查询或命令)
参数可以作为序列或映射提供,并将绑定到操作中的变量。变量使用位置(%s)或命名(%(名称)s)占位符指定。请参见向SQL查询传递参数
该方法不返回任何值。如果执行了查询,则可以使用fetch*()方法检索返回的值
正确的执行方法是-
mycursor.execute(cmd)
for record in mycursor:
print(record)
希望这能解决问题大概,
游标
是int
。我不知道您使用的db api的语义,但您在代码中只有一个地方可以进行迭代。显而易见的答案是“mycursor.execute(cmd)”返回一个“int”。为什么sql concatId
而不是其他的呢?为什么不全部参数化?最初,导入数据库是sqllite。我只是转换成MySQL,因为这是必需的。我是python新手,所以我非常需要帮助,因为错误游标
是一个int
而不是一个列表
我正在使用MYSQL作为数据库,而不是sqlite3。如何?我是python的新手。对不起:(
cmd = "SELECT * FROM students WHERE ID = " + Id
mycursor.execute(cmd)
for row in mycursor:
...
mycursor.execute(cmd)
for record in mycursor:
print(record)