On Dec 22, 2008, at 6:36 PM, Randall Smith wrote:
>
> 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?
it certainly should.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---