rendered = _render_server_default(
column.server_default, autogen_context
)
+
if rendered:
- opts.append(("server_default", rendered))
+ if isinstance(column.server_default.arg, sql.elements.TextClause):
+ opts.append(("server_default", "%(prefix)stext(%(default)s)" % {
+ 'prefix': _sqlalchemy_autogenerate_prefix(autogen_context),
+ 'default': rendered
+ }))
+ else:
+ opts.append(("server_default", rendered))
if not column.autoincrement:
opts.append(("autoincrement", column.autoincrement))
Numeric, CHAR, ForeignKey, DATETIME, INTEGER, \
TypeDecorator, CheckConstraint, Unicode, Enum,\
UniqueConstraint, Boolean, ForeignKeyConstraint,\
- PrimaryKeyConstraint, Index, func
+ PrimaryKeyConstraint, Index, func, text
from sqlalchemy.types import TIMESTAMP
from sqlalchemy.dialects import mysql, postgresql
from sqlalchemy.sql import and_, column, literal_column
),
"sa.CheckConstraint('im a constraint', name=op.f('ck_t_cc1'))"
)
+
+ def test_render_col_with_text_server_default(self):
+ c = Column('updated_at', TIMESTAMP(),
+ server_default=text('now()'),
+ nullable=False)
+ result = autogenerate.render._render_column(
+ c, self.autogen_context
+ )
+ eq_(
+ result,
+ 'sa.Column(\'updated_at\', sa.TIMESTAMP(), '
+ 'server_default=sa.text(\'now()\'), '
+ 'nullable=False)'
+ )
\ No newline at end of file