我正在尝试为学校项目使用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))
答案 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)