diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-01-28 15:20:21 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-01-28 15:20:21 -0500 |
commit | 09553dc90f4a95b314994b48068b046de1413104 (patch) | |
tree | 4103d05a99beb0ca07dea7def9aa0514809f10a1 /lib/sqlalchemy/sql/compiler.py | |
parent | 45e6875752fcaf7d3a60907959ed9d154cca0d5d (diff) | |
download | sqlalchemy-09553dc90f4a95b314994b48068b046de1413104.tar.gz |
- [feature] Dialect-specific compilers now raise
CompileException for all type/statement compilation
issues, instead of InvalidRequestError or ArgumentError.
The DDL for CREATE TABLE will re-raise
CompileExceptions to include table/column information
for the problematic column. [ticket:2361]
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 93e2473d9..2690dd896 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -23,6 +23,7 @@ To generate user-defined SQL strings, see """ import re +import sys from sqlalchemy import schema, engine, util, exc from sqlalchemy.sql import operators, functions, util as sql_util, \ visitors @@ -1379,19 +1380,35 @@ class DDLCompiler(engine.Compiled): # if only one primary key, specify it along with the column first_pk = False for column in table.columns: - text += separator - separator = ", \n" - text += "\t" + self.get_column_specification( - column, - first_pk=column.primary_key and \ - not first_pk - ) - if column.primary_key: - first_pk = True - const = " ".join(self.process(constraint) \ - for constraint in column.constraints) - if const: - text += " " + const + try: + text += separator + separator = ", \n" + text += "\t" + self.get_column_specification( + column, + first_pk=column.primary_key and \ + not first_pk + ) + if column.primary_key: + first_pk = True + const = " ".join(self.process(constraint) \ + for constraint in column.constraints) + if const: + text += " " + const + except exc.CompileError, ce: + # Py3K + #raise exc.CompileError("(in table '%s', column '%s'): %s" + # % ( + # table.description, + # column.name, + # ce.args[0] + # )) from ce + # Py2K + raise exc.CompileError("(in table '%s', column '%s'): %s" + % ( + table.description, + column.name, + ce.args[0] + )), None, sys.exc_info()[2] const = self.create_table_constraints(table) if const: |