diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-09-09 14:39:25 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-09-09 14:39:25 -0400 |
| commit | 1c325dc9c73820e78ab79d4aa160dc0f6cbe3b65 (patch) | |
| tree | 02b1a3fb6f24fe0bddd582a3fec519c99d40d36c /test/sql/test_metadata.py | |
| parent | b96250d0063cd7ce9cc1f95abade68e6656d6acb (diff) | |
| download | sqlalchemy-1c325dc9c73820e78ab79d4aa160dc0f6cbe3b65.tar.gz | |
- [feature] Added a hook to the system of rendering
CREATE TABLE that provides access to the render for each
Column individually, by constructing a @compiles
function against the new schema.CreateColumn
construct. [ticket:2463]
Diffstat (limited to 'test/sql/test_metadata.py')
| -rw-r--r-- | test/sql/test_metadata.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py index 739065d0d..0aa5e5341 100644 --- a/test/sql/test_metadata.py +++ b/test/sql/test_metadata.py @@ -1204,6 +1204,48 @@ class ColumnDefinitionTest(AssertsCompiledSQL, fixtures.TestBase): getattr, select([t1.select().alias()]), 'c' ) + def test_custom_create(self): + from sqlalchemy.ext.compiler import compiles, deregister + + @compiles(schema.CreateColumn) + def compile(element, compiler, **kw): + column = element.element + + if "special" not in column.info: + return compiler.visit_create_column(element, **kw) + + text = "%s SPECIAL DIRECTIVE %s" % ( + column.name, + compiler.type_compiler.process(column.type) + ) + default = compiler.get_column_default_string(column) + if default is not None: + text += " DEFAULT " + default + + if not column.nullable: + text += " NOT NULL" + + if column.constraints: + text += " ".join( + compiler.process(const) + for const in column.constraints) + return text + + t = Table('mytable', MetaData(), + Column('x', Integer, info={"special": True}, primary_key=True), + Column('y', String(50)), + Column('z', String(20), info={"special": True}) + ) + + self.assert_compile( + schema.CreateTable(t), + "CREATE TABLE mytable (x SPECIAL DIRECTIVE INTEGER " + "NOT NULL, y VARCHAR(50), " + "z SPECIAL DIRECTIVE VARCHAR(20), PRIMARY KEY (x))" + ) + + deregister(schema.CreateColumn) + class ColumnDefaultsTest(fixtures.TestBase): """test assignment of default fixures to columns""" |
