diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-08-10 18:07:46 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-08-10 18:07:46 +0000 |
commit | 219bcf8cb17bdfeb526c72b29ec8ece5127f6c98 (patch) | |
tree | 699b1789f343c82c5c17431b28f48ddce1a5ef28 | |
parent | 8c3607b0410592b11822b599d3fdc8c7f464944a (diff) | |
download | sqlalchemy-219bcf8cb17bdfeb526c72b29ec8ece5127f6c98.tar.gz |
- fixes to PG unicode table/sequence reflection/create/drops
-rw-r--r-- | lib/sqlalchemy/ansisql.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/databases/postgres.py | 6 | ||||
-rw-r--r-- | test/engine/reflection.py | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/lib/sqlalchemy/ansisql.py b/lib/sqlalchemy/ansisql.py index 3d5e917cf..430027ed8 100644 --- a/lib/sqlalchemy/ansisql.py +++ b/lib/sqlalchemy/ansisql.py @@ -829,7 +829,7 @@ class ANSISchemaGenerator(ANSISchemaBase): if isinstance(column.default.arg, basestring): return "'%s'" % column.default.arg else: - return str(self._compile(column.default.arg, None)) + return unicode(self._compile(column.default.arg, None)) else: return None diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index 8f04eca26..a30832b43 100644 --- a/lib/sqlalchemy/databases/postgres.py +++ b/lib/sqlalchemy/databases/postgres.py @@ -313,7 +313,7 @@ class PGDialect(ansisql.ANSIDialect): return bool( not not cursor.rowcount ) def has_sequence(self, connection, sequence_name): - cursor = connection.execute('''SELECT relname FROM pg_class WHERE relkind = 'S' AND relnamespace IN ( SELECT oid FROM pg_namespace WHERE nspname NOT LIKE 'pg_%%' AND nspname != 'information_schema' AND relname = %(seqname)s);''', {'seqname': sequence_name}) + cursor = connection.execute('''SELECT relname FROM pg_class WHERE relkind = 'S' AND relnamespace IN ( SELECT oid FROM pg_namespace WHERE nspname NOT LIKE 'pg_%%' AND nspname != 'information_schema' AND relname = %(seqname)s);''', {'seqname': sequence_name.encode(self.encoding)}) return bool(not not cursor.rowcount) def is_disconnect(self, e): @@ -364,7 +364,7 @@ class PGDialect(ansisql.ANSIDialect): ORDER BY a.attnum """ % 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}) + 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) rows = c.fetchall() @@ -605,7 +605,7 @@ class PGSchemaGenerator(ansisql.ANSISchemaGenerator): class PGSchemaDropper(ansisql.ANSISchemaDropper): def visit_sequence(self, sequence): if not sequence.optional and (not self.checkfirst or self.dialect.has_sequence(self.connection, sequence.name)): - self.append("DROP SEQUENCE %s" % sequence.name) + self.append("DROP SEQUENCE %s" % self.preparer.format_sequence(sequence)) self.execute() class PGDefaultRunner(ansisql.ANSIDefaultRunner): diff --git a/test/engine/reflection.py b/test/engine/reflection.py index de7943f46..a704b6df1 100644 --- a/test/engine/reflection.py +++ b/test/engine/reflection.py @@ -645,7 +645,7 @@ class UnicodeTest(PersistTest): names = set([u'plain', u'Unit\u00e9ble', u'\u6e2c\u8a66']) for name in names: - Table(name, metadata, Column('id', Integer, primary_key=True)) + Table(name, metadata, Column('id', Integer, Sequence(name + "_id_seq"), primary_key=True)) metadata.create_all() reflected = set(bind.table_names()) |