Ошибка, введя string в базе данных Mysql

Я работаю с python и у меня есть следующая переменная: pantalla="LCD" Использовав код

try:
    cursor = connection.cursor()
    sql = f"UPDATE tabla SET pantalla = {pantalla} WHERE id = 1 "
    cursor.execute(sql) 
    connection.commit()
except:
    print(f"pantalla no agregado en ID: {i}")

Он показывает меня except. Моя колонна конфигурировалась как VARCHAR(50) и в Cotejamiento он имеет utf8mb4_general_ci. Эта проблема происходит со мной со всеми переменными, которые являются типом string. Не, если плохая condigurada таблица, или в чем я не удаюсь. Но с переменными float, что у меня есть, функционирует нормально. Спасибо заранее.

3
задан 28.12.2019, 03:15
1 ответ

Не sГ© quГ© представь f в тебе cГіdigo Вї?

С другой стороны, deberГ-схвати применять готовые консультации, чтобы предотвращать атаки InyecciГіn SQL .

Таким образом deberГ, - чтобы функционировать:

try:
    cursor = connection.cursor(prepared=True)
    stmt = "UPDATE tabla SET pantalla = %s WHERE id = 1"
    cursor.execute(stmt,(pantalla)) 
    connection.commit()
except:
    print("pantalla no agregado en ID: {i}")

На готовых консультациях ты можешь проверять она documentaciГіn . Говорится о том, чтобы помещать закладку %s вместо информации, которая проходит потом в execute, это избегает того, чтобы стоимостью pantalla (или другой, полученный от внешней стороны) манипулировали, чтобы выполнять cГіdigo злонамеренный в консультации.

3
ответ дан 29.12.2019, 09:10
  • 1
    Она f он он форматирует string, но как está используя он faltó помещать ему простые кавычки ' {переменная} ' – Lucas Damian 28.12.2019, 13:41
  • 2
    @LucasDamian спасибо. Действительно я не программирую в python, следовательно не sabí в который f serví в для этого. В любом случае правильное serí к которому я применил готовые консультации предотвращая así Inyecció n SQL . – A. Cedano 28.12.2019, 14:48
  • 3
    Правильный, спасибо. Я faltó простые кавычки, он признавал стоимость переменной колонной, которую было нужно обновлять, из-за этого не находил эту колонну и давал ошибку. С другой стороны, sí я увидел, что используются отдельные консультации, но чтобы предотвращать так có я говорю, что он использовал ее f; он не знал, что это было, чтобы предотвращать вставки sql, спасибо за совет. Хотя эта переменная не получена от формуляра, в любом случае serí в правильный делать консультации отделенными, чтобы привыкать к этому? Или он не необходим в этом случае? – diego medina 28.12.2019, 17:52
  • 4
    @diegomedina té rmino правильный это консультации готовые . Если информация приходит из формуляра или любого другого шрифта, которым может манипулировать пользователь, нужно использовать готовые консультации, потому что пользователи плохо умышленные (хакеры) podrí an атаковать в систему используя эту информацию. С другой стороны готовые консультации - má s rá попроси в сценах, где ты должен повторять консультацию из-за algú n я мотивирую, так как драйвер готовит план консультации, единственный раз. – A. Cedano 28.12.2019, 21:00

Теги

Похожие вопросы