return _render_potential_expr(
default.arg, autogen_context, is_server_default=True
)
+ elif isinstance(default, sa_schema.FetchedValue):
+ return _render_fetched_value(autogen_context)
if isinstance(default, str) and repr_:
default = repr(re.sub(r"^'|'$", "", default))
}
+def _render_fetched_value(autogen_context: AutogenContext) -> str:
+ return "%(prefix)sFetchedValue()" % {
+ "prefix": _sqlalchemy_autogenerate_prefix(autogen_context),
+ }
+
+
def _repr_type(
type_: TypeEngine,
autogen_context: AutogenContext,
--- /dev/null
+.. change::
+ :tags: bug, autogenerate
+ :tickets: 1633
+
+ Fixed the rendering of ``server_default=FetchedValue()`` to ensure it is
+ preceded by the ``sa.`` prefix in the migration script. Pull request
+ courtesy david-fed.
from sqlalchemy import DateTime
from sqlalchemy import DefaultClause
from sqlalchemy import Enum
+from sqlalchemy import FetchedValue
from sqlalchemy import ForeignKey
from sqlalchemy import ForeignKeyConstraint
from sqlalchemy import func
"server_default='0', nullable=True)",
)
+ def test_render_server_default_fetched_value(self):
+ c = Column("value", Integer, server_default=FetchedValue())
+ result = autogenerate.render._render_column(c, self.autogen_context)
+ eq_(
+ result,
+ "sa.Column('value', sa.Integer(), "
+ "server_default=sa.FetchedValue(), nullable=True)",
+ )
+
def test_render_modify_reflected_int_server_default(self):
op_obj = ops.AlterColumnOp(
"sometable",