diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-11-27 05:37:57 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-11-27 05:37:57 +0000 |
commit | 4cc7b51e2039eea1d8a773cf92255588bd2ad9c8 (patch) | |
tree | 582753d4dd16694bbf3315bd44e595469cd19e50 | |
parent | 378c02348ccb324532f015d60b871116834a3890 (diff) | |
download | sqlalchemy-4cc7b51e2039eea1d8a773cf92255588bd2ad9c8.tar.gz |
fixed reflection of unicode, [ticket:881]
-rw-r--r-- | lib/sqlalchemy/databases/postgres.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index 1cae31b53..4203814d0 100644 --- a/lib/sqlalchemy/databases/postgres.py +++ b/lib/sqlalchemy/databases/postgres.py @@ -406,12 +406,13 @@ class PGDialect(default.DefaultDialect): preparer = self.identifier_preparer if table.schema is not None: schema_where_clause = "n.nspname = :schema" + schemaname = table.schema + if isinstance(schemaname, str): + schemaname = schemaname.decode(self.encoding) else: schema_where_clause = "pg_catalog.pg_table_is_visible(c.oid)" - - ## information schema in pg suffers from too many permissions' restrictions - ## let us find out at the pg way what is needed... - + schemaname = None + SQL_COLS = """ SELECT a.attname, pg_catalog.format_type(a.atttypid, a.atttypmod), @@ -431,8 +432,10 @@ class PGDialect(default.DefaultDialect): """ % schema_where_clause s = sql.text(SQL_COLS, bindparams=[sql.bindparam('table_name', type_=sqltypes.Unicode), sql.bindparam('schema', type_=sqltypes.Unicode)], typemap={'attname':sqltypes.Unicode, 'default':sqltypes.Unicode}) - c = connection.execute(s, table_name=table.name, - schema=table.schema) + tablename = table.name + if isinstance(tablename, str): + tablename = tablename.decode(self.encoding) + c = connection.execute(s, table_name=tablename, schema=schemaname) rows = c.fetchall() if not rows: |