diff options
author | Michael Trier <mtrier@gmail.com> | 2008-12-23 06:01:09 +0000 |
---|---|---|
committer | Michael Trier <mtrier@gmail.com> | 2008-12-23 06:01:09 +0000 |
commit | 88aad2a374074e2b5992e9e9e110967707da0bc1 (patch) | |
tree | e02741c2667432f87875bef63f75beac9b90213e /lib/sqlalchemy/databases/mssql.py | |
parent | 10c62a94b004a0fef5585a318e78cff681801556 (diff) | |
download | sqlalchemy-88aad2a374074e2b5992e9e9e110967707da0bc1.tar.gz |
Added MSSQL support for introspecting the default schema name for the logged in user. Thanks Randall Smith. Fixes #1258.
Diffstat (limited to 'lib/sqlalchemy/databases/mssql.py')
-rw-r--r-- | lib/sqlalchemy/databases/mssql.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index 7d2cae5b9..ecf8b2462 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -955,7 +955,25 @@ class MSSQLDialect(default.DefaultDialect): newobj.dialect = self return newobj + @base.connection_memoize(('dialect', 'default_schema_name')) def get_default_schema_name(self, connection): + query = "SELECT user_name() as user_name;" + user_name = connection.scalar(sql.text(query)) + if user_name is not None: + # now, get the default schema + query = """ + SELECT default_schema_name FROM + sys.database_principals + WHERE name = :user_name + AND type = 'S' + """ + try: + default_schema_name = connection.scalar(sql.text(query), + user_name=user_name) + if default_schema_name is not None: + return default_schema_name + except: + pass return self.schema_name def table_names(self, connection, schema): |