Разница между SQLAlchemy default и server_default при работе с базами данных заключается в том, как они устанавливают значения по умолчанию. 14
default позволяет определить значение по умолчанию внутри кода на Python. 1 Если поле не имеет значения, используется значение по умолчанию и записывается в базу данных. 3 Этот аргумент предоставляет больше контроля в коде на Python, позволяет реализовать более сложную логику. 1
serverdefault позволяет установить значение по умолчанию на уровне базы данных. 2 Это особенно полезно, когда записи вставляются напрямую в базу данных, без прохождения через SQLAlchemy. 2 Использование serverdefault может быть более эффективным, так как значение по умолчанию обрабатывается непосредственно базой данных. 1 Кроме того, этот аргумент обычно более переносимый между разными системами баз данных, поскольку он зависит от собственных возможностей базы данных. 1
Таким образом, default больше подходит для управления значениями по умолчанию внутри кода на Python, а server_default — для установки значений по умолчанию на уровне базы данных и обеспечения их применения даже при прямых вставках записей. 12