diff options
| author | Ants Aasma <ants.aasma@gmail.com> | 2007-08-19 23:01:44 +0000 |
|---|---|---|
| committer | Ants Aasma <ants.aasma@gmail.com> | 2007-08-19 23:01:44 +0000 |
| commit | be16b15f2c0dc33f2491fc6ad1de0f11b1f6c7d4 (patch) | |
| tree | ba57ced2ea589462a86200a61cf726ef94b504d1 | |
| parent | d1020a8d4ee96a4b00eed9b0eae8adf176bcd149 (diff) | |
| download | sqlalchemy-be16b15f2c0dc33f2491fc6ad1de0f11b1f6c7d4.tar.gz | |
an early out processing insert/update column parameters was a bit too early.
| -rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 10 | ||||
| -rw-r--r-- | test/sql/query.py | 6 |
2 files changed, 11 insertions, 5 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index e9046b407..59eb3cdb3 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -681,11 +681,6 @@ class DefaultCompiler(engine.Compiled, visitors.ClauseVisitor): self.binds[col.key] = bindparam return self.bindparam_string(self._truncate_bindparam(bindparam)) - # no parameters in the statement, no parameters in the - # compiled params - return binds for all columns - if self.parameters is None and stmt.parameters is None: - return [(c, create_bind_param(c, None)) for c in stmt.table.columns] - def create_clause_param(col, value): self.traverse(value) self.inline_params.add(col) @@ -699,6 +694,11 @@ class DefaultCompiler(engine.Compiled, visitors.ClauseVisitor): else: return key + # no parameters in the statement, no parameters in the + # compiled params - return binds for all columns + if self.parameters is None and stmt.parameters is None: + return [(c, create_bind_param(c, None)) for c in stmt.table.columns] + # if we have statement parameters - set defaults in the # compiled params if self.parameters is None: diff --git a/test/sql/query.py b/test/sql/query.py index 8ec3190b4..ddd5348c4 100644 --- a/test/sql/query.py +++ b/test/sql/query.py @@ -145,6 +145,12 @@ class QueryTest(PersistTest): s = select([users], users.c.user_id==bindparam('id')).compile() c = testbase.db.connect() assert c.execute(s, id=7).fetchall()[0]['user_id'] == 7 + + def test_compiled_insert_execute(self): + users.insert().compile().execute(user_id = 7, user_name = 'jack') + s = select([users], users.c.user_id==bindparam('id')).compile() + c = testbase.db.connect() + assert c.execute(s, id=7).fetchall()[0]['user_id'] == 7 def test_repeated_bindparams(self): """test that a BindParam can be used more than once. |
