diff options
Diffstat (limited to 'lib/sqlalchemy/databases/mssql.py')
-rw-r--r-- | lib/sqlalchemy/databases/mssql.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index aa39e3e09..ff756dd80 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -42,7 +42,7 @@ Known issues / TODO: """ -import sys, StringIO, string, types, re, datetime +import sys, StringIO, string, types, re, datetime, random import sqlalchemy.sql as sql import sqlalchemy.engine as engine @@ -736,6 +736,14 @@ class MSSQLCompiler(ansisql.ANSICompiler): binary.left, binary.right = binary.right, binary.left super(MSSQLCompiler, self).visit_binary(binary) + def visit_select(self, select): + # label function calls, so they return a name in cursor.description + for i,c in enumerate(select._raw_columns): + if isinstance(c, sql._Function): + select._raw_columns[i] = c.label(c.name + "_" + hex(random.randint(0, 65535))[2:]) + + super(MSSQLCompiler, self).visit_select(select) + function_rewrites = {'current_date': 'getdate', 'length': 'len', } @@ -802,3 +810,4 @@ class MSSQLIdentifierPreparer(ansisql.ANSIIdentifierPreparer): dialect = MSSQLDialect + |