]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- fixes to PG unicode table/sequence reflection/create/drops
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 10 Aug 2007 18:07:46 +0000 (18:07 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 10 Aug 2007 18:07:46 +0000 (18:07 +0000)
lib/sqlalchemy/ansisql.py
lib/sqlalchemy/databases/postgres.py
test/engine/reflection.py

index 3d5e917cf46980057be57164fc571a502342b654..430027ed8d2ac60b26e397db7dd6b00c2a402b16 100644 (file)
@@ -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
 
index 8f04eca26c3372e9e3db1b13da8a12a3f1aa2b0f..a30832b43d1ed2686b456955487742775b89375c 100644 (file)
@@ -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):
index de7943f4674927b36abf19edad138d7fe27e894b..a704b6df1723ffc8282f85066509d332c4747d04 100644 (file)
@@ -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())