Итак, у меня есть список форматированных строк, которые я хочу вставить в базу данных. Они отформатированы, поэтому база данных будет принимать этот тип строки.Предотвращение SQL-инъекции со списками в python
Вот пример формата:
mylist = [('123456789'), ('987654321'), ('1234554321'),....('9999999999')]
mylist[0] = ('123456789')
Формат должен быть гарантировать, что они введены правильно.
Я хочу, чтобы убедиться, что она защищена от инъекции SQL,
Я знаю, что это работает:
database = connection.cursor()
for data in mylist:
command = " INSERT INTO my_table(my_value) VALUES %s" %data
database.execute(command)
connection.commit()
Однако я не уверен, если это правильный способ предотвратить SQL инъекции
Что бы я предпочел сделать, но это не будет работать:
database = connection.cursor()
for data in mylist:
command = " INSERT INTO my_table(my_value) VALUES %s"
database.execute(command, (data))
connection.commit()
Ошибка I получаете:
'str' object is not callable
Я видел онлайн here, что это правильно, так почему обыкновение это работает
Пожалуйста, дайте нам полный отслеживающий. Обратите внимание, что '(data)' не является кортежем, это то же самое, что и 'data', сгруппированные в круглые скобки. Используйте '(data,)', чтобы сделать его кортежем. –
Опять же, вы можете также отбросить все «(...)» круглые скобки для всего, что они делают. 'mylist = [('123456789'), ('987654321'), ('1234554321'), .... ('9999999999')]' это то же самое, что 'mylist = ['123456789', '987654321', '1234554321', .... '9999999999'] '. –