Подтвердить что ты не робот

Оператор обновления Python MYSQL

Я пытаюсь получить эту инструкцию по обновлению 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)   

Любые идеи, в которых я ошибаюсь?

4b9b3361

Ответ 1

Это должно быть:

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 Injection. Поскольку это так просто (и аналогично) сделать это правильным способом tm. Сделайте это правильно.

Единственное, что вы должны быть осторожны, это то, что некоторые базы данных не поддерживают одно и то же соглашение для замены строк (SQLite приходит на ум).

Ответ 2

У вас синтаксис не так:

cursor.execute ("""
   UPDATE tblTableName
   SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
   WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))

Для получения дополнительной информации прочитайте документацию.

Ответ 3

Это правильный путь:

import MySQLdb

if __name__ == '__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. Не забывайте connect.commit(), или он не будет работать

Ответ 4

Ни один из них не работал у меня по какой-то причине.

Я понял, что по какой-то причине python не читает% s. Поэтому используйте (?) Вместо% S в вашем коде SQL.

И, наконец, это сработало для меня.

   cursor.execute ("update tablename set columnName = (?) where ID = (?) ",("test4","4"))
   cursor.commit()