diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-01-03 18:53:41 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-01-03 18:53:41 +0000 |
commit | d66f470326c59330e323ad470d6014d2adbba729 (patch) | |
tree | 055654aba24c9acfd6ac37a8f601f44ef84d8560 /lib/sqlalchemy/sql/util.py | |
parent | cae83dd7ea9b847961b4df3227bc829b62510640 (diff) | |
download | sqlalchemy-d66f470326c59330e323ad470d6014d2adbba729.tar.gz |
fixed DDL quoting with literal strings that have ' [ticket:1640]
Diffstat (limited to 'lib/sqlalchemy/sql/util.py')
-rw-r--r-- | lib/sqlalchemy/sql/util.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/util.py b/lib/sqlalchemy/sql/util.py index 1b4bc67fc..821b3a3d1 100644 --- a/lib/sqlalchemy/sql/util.py +++ b/lib/sqlalchemy/sql/util.py @@ -172,6 +172,13 @@ def find_columns(clause): visitors.traverse(clause, {}, {'column':cols.add}) return cols +def _quote_ddl_expr(element): + if isinstance(element, basestring): + element = element.replace("'", "''") + return "'%s'" % element + else: + return repr(element) + def expression_as_ddl(clause): """Given a SQL expression, convert for usage in DDL, such as CREATE INDEX and CHECK CONSTRAINT. @@ -183,7 +190,7 @@ def expression_as_ddl(clause): """ def repl(element): if isinstance(element, expression._BindParamClause): - return expression.literal_column(repr(element.value)) + return expression.literal_column(_quote_ddl_expr(element.value)) elif isinstance(element, expression.ColumnClause) and \ element.table is not None: return expression.column(element.name) |