SQL Lite 3提供字符串作为单独的字符?

时间:2016-11-16 12:24:18

标签: python sql sqlite

我试图提供一个“约会时间”'像这样格式化的字符串; " 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()

2 个答案:

答案 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))