并非在SQL语句中使用了所有参数,在sql语句中使用了变量

时间:2018-10-25 07:04:55

标签: python sql

我正在尝试为学校项目使用SQL。要在SQL语句中使用变量,我遵循了这篇文章:How to use variables in SQL statement in Python?。 但是我在此函数中遇到以下错误:

  

出了点问题:SQL语句中并未使用所有参数

def Einkauf():
Typ = int(input("Typ"))
Anzahl = input("Anzahl")
MHD = input("MHD (YYYYMMDD)")
try:
    cursor.execute("insert into Warenlager(Anzahl, MHD, StatusID, TypId) values(?,?,1,?)", (Anzahl,MHD,Typ))
    db.commit()
except mysql.connector.Error as err:
    print("Something went wrong: {}".format(err))

2 个答案:

答案 0 :(得分:1)

正如我在评论中所说,mysql.connector使用%s作为占位符。

cursor.execute("insert into Warenlager(Anzahl, MHD, StatusID, TypId) values(%s, %s, 1, %s)", (Anzahl,MHD,Typ))

注意,这不是不是不安全的,因为您没有将其用于字符串插值。这不安全:

cursor.execute("insert into Warenlager(Anzahl, MHD, StatusID, TypId) values(%s, %s, 1, %s)" % (Anzahl,MHD,Typ))  # don't do this

实际上,您所引用的帖子说的是完全一样的东西,所以我不知道您从哪里想到不应该这样做。

答案 1 :(得分:-1)

更改此

Warenlager(Anzahl, MHD, StatusID, TypId) values(?,?,1,?)", (Anzahl,MHD,Typ)

Warenlager(Anzahl, MHD, StatusID, TypId) values(?,?,?,?)", (Anzahl,MHD,1,Typ)