Michael Bayer wrote:
> just FTR, the current expected behavior of default schemas is that if
> your tables are known to exist in the default schema configured on the
> database connection, you leave the "schema" attribute on Table blank.
> otherwise, you set it.

The mssql dialect does not ask the server what the default schema is. 
It just sets it to 'dbo', so for user scott with default schema TEST 
this would yield the wrong value:

     import sqlalchemy as sa
     e = sa.create_engine('mssql://scott:ti...@blackie/test')
     print e.dialect.get_default_schema_name(e) # returns dbo

This would return the value from there server:

     def get_default_schema_name(self, connection):
         # get the username
         query = "SELECT user_name() as user_name;"
         rp = connection.execute(sql.text(query))
         row = rp.fetchone()
         rp.close()
         if row is not None:
             user_name = row.user_name
             # now, get the default schema
             query = """
             SELECT default_schema_name FROM
             sys.database_principals
             WHERE name = :user_name
             AND type = 'S'
             """
             rp = connection.execute(sql.text(query), user_name=user_name)
             row = rp.fetchone()
             rp.close()
             if row is not None:
                 return row.default_schema_name
         return self.schema_name

postgres doesn't even set a schema_name on the Dialect.  It goes like this:

     def get_default_schema_name(self, connection):
         return connection.scalar("select current_schema()", None)
     get_default_schema_name = base.connection_memoize(
         ('dialect', 'default_schema_name'))(get_default_schema_name)

Shouldn't mssql do something similar to Postgres here?

--Randall


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to