Вы можете найти список утилит распространения, перечисленных @ https://wiki.python.org/moin/DistributionUtilities .
Я использую bbfreeze , и он работает очень хорошо (но пока поддержка python 3).
build
сам по себе ничего не записывает в базу данных, поэтому SQL-инъекция не применяется. Когда вы вызываете save
, не имеет значения, был ли объект создан через build
или через другой механизм, такой как передача атрибутов в new
или использование отдельных методов attribute=
, тот же самый код будет использован для сохранения вашего объекта в базе данных.
Возвращает новый объект типа collection который был инстанцирован с атрибутами и связан с этим объектом через таблицу присоединения, но еще не еще не был сохранен.
Метод save
устраняет любые кавычки и т.д. в значениях атрибутов, используя метод, соответствующий используемой базе данных (например, MySQL), так что результирующий запрос insert
или create
не будет подвержен SQL-инъекции. То же самое относится к update_attributes
и к любым параметризованным :conditions
, которые вы передаете в find
. В случае, когда вам нужно быть осторожным и может потребоваться ручное экранирование, это если вы передаете буквальные строки в соединение с базой данных в качестве запросов.