summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2009-12-08 03:09:18 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2009-12-08 03:09:18 +0000
commitd39a15748948904d5d45a3a6ee798b8b799b9311 (patch)
tree47fd0f112e62b299cf917710f194f5fa6c2a4d94 /lib/sqlalchemy/sql
parent358bc9db1c86fc26d89ed726305a109af14e2572 (diff)
downloadsqlalchemy-d39a15748948904d5d45a3a6ee798b8b799b9311.tar.gz
- Session.execute() now locates table- and
mapper-specific binds based on a passed in expression which is an insert()/update()/delete() construct. [ticket:1054]
Diffstat (limited to 'lib/sqlalchemy/sql')
-rw-r--r--lib/sqlalchemy/sql/util.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/sqlalchemy/sql/util.py b/lib/sqlalchemy/sql/util.py
index 78160ad1e..075d8c7ef 100644
--- a/lib/sqlalchemy/sql/util.py
+++ b/lib/sqlalchemy/sql/util.py
@@ -47,7 +47,9 @@ def find_join_source(clauses, join_to):
return None, None
-def find_tables(clause, check_columns=False, include_aliases=False, include_joins=False, include_selects=False):
+def find_tables(clause, check_columns=False,
+ include_aliases=False, include_joins=False,
+ include_selects=False, include_crud=False):
"""locate Table objects within the given expression."""
tables = []
@@ -61,7 +63,11 @@ def find_tables(clause, check_columns=False, include_aliases=False, include_join
if include_aliases:
_visitors['alias'] = tables.append
-
+
+ if include_crud:
+ _visitors['insert'] = _visitors['update'] = \
+ _visitors['delete'] = lambda ent: tables.append(ent.table)
+
if check_columns:
def visit_column(column):
tables.append(column.table)