У меня есть переменная row_data = (searchindex, asin, title, browsenode, salesrank, brand, listprice, saleprice)
, и любой из этих элементов может быть NULL
, для вставки в базу данных, я использую
sql = "INSERT INTO table (searchindex,asin,title,browsenode, salesrank, brand, listprice, saleprice) VALUES ('%s','%s','%s','%s', '%s', '%s', '%f', '%f')" % row_data
Но это не очень масштабируемо, поскольку я добавляю больше полей в row_data. Есть ли более эффективный способ сделать это?
Спасибо
Пожалуйста, не используйте строчную интерполяцию для построения SQL, так как это очень опасно. Используйте соответствующие функции в вашей библиотеке MySQL, чтобы передать значения в качестве параметров для запроса.
Количество столбцов в таблице вряд ли изменится по мере разработки вашей программы. Может быть, раз в несколько месяцев, и в этот момент редко бывает сложно обновить ваш SQL.
В качестве альтернативы вы можете использовать такую систему, как SQLAlchemy, которая обрабатывает много всего этого для вас и перестает вам писать много SQL самостоятельно.