diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-09-01 21:21:29 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-09-01 21:21:29 +0000 |
commit | 5df1759e151274594ca4691419f6be7e91257635 (patch) | |
tree | 9b0d4feb0811f2320cb15a3c5305449a81845d79 /lib/sqlalchemy/sql/compiler.py | |
parent | 61f2ca2c9d708660c45d5e81bfd3337bb82bbe62 (diff) | |
download | sqlalchemy-5df1759e151274594ca4691419f6be7e91257635.tar.gz |
- got all examples working
- inline default execution occurs for *all* non-PK columns
unconditionally - preexecute only for non-executemany PK cols on
PG, Oracle, etc.
- new default docs
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 617b2468a..7f9d0e31b 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -614,7 +614,7 @@ class DefaultCompiler(engine.Compiled, visitors.ClauseVisitor): return False def visit_sequence(self, seq): - raise NotImplementedError() + return None def visit_insert(self, insert_stmt): @@ -688,32 +688,26 @@ class DefaultCompiler(engine.Compiled, visitors.ClauseVisitor): values.append((c, value)) elif isinstance(c, schema.Column): if self.isinsert: - if isinstance(c.default, schema.ColumnDefault): - if self.inline and isinstance(c.default.arg, sql.ClauseElement): + if c.primary_key and self.uses_sequences_for_inserts() and not self.inline: + values.append((c, create_bind_param(c, None))) + self.prefetch.add(c) + elif isinstance(c.default, schema.ColumnDefault): + if isinstance(c.default.arg, sql.ClauseElement): values.append((c, self.process(c.default.arg))) self.postfetch.add(c) else: values.append((c, create_bind_param(c, None))) self.prefetch.add(c) elif isinstance(c.default, schema.PassiveDefault): - if c.primary_key and self.uses_sequences_for_inserts() and not self.inline: - values.append((c, create_bind_param(c, None))) - self.prefetch.add(c) - else: + self.postfetch.add(c) + elif isinstance(c.default, schema.Sequence): + proc = self.process(c.default) + if proc is not None: + values.append((c, proc)) self.postfetch.add(c) - elif (c.primary_key or isinstance(c.default, schema.Sequence)) and self.uses_sequences_for_inserts(): - if self.inline: - if c.default is not None: - proc = self.process(c.default) - if proc is not None: - values.append((c, proc)) - self.postfetch.add(c) - else: - values.append((c, create_bind_param(c, None))) - self.prefetch.add(c) elif self.isupdate: if isinstance(c.onupdate, schema.ColumnDefault): - if self.inline and isinstance(c.onupdate.arg, sql.ClauseElement): + if isinstance(c.onupdate.arg, sql.ClauseElement): values.append((c, self.process(c.onupdate.arg))) self.postfetch.add(c) else: |