我试图提供一个“约会时间”'像这样格式化的字符串; " 2016-11-16 12:17:07.957850" 。 SQL Lite将其视为我分别传递每个字符;
sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用1,并且提供了26个。
我该如何解决?
cursor = db.cursor()
sql = """update Pet set [PastLogin] = @LastChecka where [PetId] = """ + str(PetID)
cursor.execute("PRAGMA foreign_keys = ON")
cursor.execute(sql,LastChecka)
db.commit()
答案 0 :(得分:0)
execute()
函数需要参数列表,字符串是字符列表。
您必须将参数放入元组或数组:(LastChecka,)
或[LastChecka]
但是为两个值使用参数会更好:
sql = "UPDATE Pet SET [PastLogin] = @LastChecka WHERE [PetId] = @PetID"
cursor.execute(sql, (LastChecka, PetID))
答案 1 :(得分:-1)
您根本没有在查询中放置任何占位符。 @varname
指的是声明的变量,而不是占位符。
另请注意,PetID也应该是一个参数。
另外,在大括号中包装字段名称不是标准SQL。
sql = """update Pet set PastLogin = ? where PetId = ?"""
cursor.execute(sql,(LastChecka, PetId))