J'essaie d'obtenir cette instruction de mise à jour Python MYSQL correcte (avec des variables):
cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % ServerID)
Des idées où je vais mal?
Vous avez la syntaxe erronée:
cursor.execute ("""
UPDATE tblTableName
SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))
Pour plus, lisez la documentation .
Voici la bonne façon:
import MySQLdb
if __== '__main__':
connect = MySQLdb.connect(Host="localhost", port=3306,
user="xxx", passwd="xxx", db='xxx', charset='utf8')
cursor = connect.cursor()
cursor.execute("""
UPDATE tblTableName
SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))
connect.commit()
connect.close()
P.S. N'oubliez pas connect.commit()
, ou cela ne fonctionnera pas
Aucun d'entre eux n'a travaillé pour moi pour une raison quelconque.
J'ai compris que pour une raison quelconque, python ne lisait pas% s. Donc, utilisez (?) Au lieu de% S dans votre code SQL.
Et finalement cela a fonctionné pour moi.
cursor.execute ("update tablename set columnName = (?) where ID = (?) ",("test4","4"))
connect.commit()
@Esteban Küber a absolument raison.
Peut-être un indice supplémentaire pour les débutants sanglants comme moi . Si vous spécifiez les variables avec% s , vous devez suivre ce principe pour CHAQUE valeur d'entrée , ce qui signifie pour SET- variables ainsi que pour les variables WHERE.
Sinon, vous devrez faire face à un message de fin tel que 'Vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la syntaxe à utiliser près de '% s WHERE'