summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-08-10 18:07:46 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-08-10 18:07:46 +0000
commit219bcf8cb17bdfeb526c72b29ec8ece5127f6c98 (patch)
tree699b1789f343c82c5c17431b28f48ddce1a5ef28
parent8c3607b0410592b11822b599d3fdc8c7f464944a (diff)
downloadsqlalchemy-219bcf8cb17bdfeb526c72b29ec8ece5127f6c98.tar.gz
- fixes to PG unicode table/sequence reflection/create/drops
-rw-r--r--lib/sqlalchemy/ansisql.py2
-rw-r--r--lib/sqlalchemy/databases/postgres.py6
-rw-r--r--test/engine/reflection.py2
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())