このPython MYSQL更新ステートメントを正しく取得しようとしています(変数あり):
cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % ServerID)
私が間違っているアイデアはありますか?
このPython MYSQL更新ステートメントを正しく取得しようとしています(変数あり):
cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % ServerID)
私が間違っているアイデアはありますか?
それはあるべきです:
cursor.execute ("""
UPDATE tblTableName
SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))
基本的な文字列操作でそれを行うこともできます、
cursor.execute ("UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server='%s' " % (Year, Month, Day, Hour, Minute, ServerID))
ただし、この方法ではSQLインジェクションを利用できるため、お勧めできません。正しい方法でそれを行うのはとても簡単です(そして同様です)。正しくやってください。
注意する必要がある唯一のことは、一部のデータベースバックエンドが文字列置換の同じ規則に従わないことです(SQLiteが思い浮かびます)。
構文がすべて間違っています:
cursor.execute ("""
UPDATE tblTableName
SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))
詳細については、ドキュメントをお読みください。
どちらも何らかの理由で私のために働いていませんでした。
何らかの理由で python が %s を読み取らないことがわかりました。したがって、SQL コードでは %S の代わりに (?) を使用してください。
そして最後に、これは私のために働きました。
cursor.execute ("update tablename set columnName = (?) where ID = (?) ",("test4","4"))
connect.commit()