From d3e6ccc62555688bced7d4eb463718b30db7c706 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 30 Jan 2008 21:08:11 +0000 Subject: - Oracle and others properly encode SQL used for defaults like sequences, etc., even if no unicode idents are used since identifier preparer may return a cached unicode identifier. --- lib/sqlalchemy/databases/postgres.py | 2 +- lib/sqlalchemy/engine/base.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'lib/sqlalchemy') diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index 220c2a487..578ef48d0 100644 --- a/lib/sqlalchemy/databases/postgres.py +++ b/lib/sqlalchemy/databases/postgres.py @@ -760,7 +760,7 @@ class PGDefaultRunner(base.DefaultRunner): def visit_sequence(self, seq): if not seq.optional: - return self.execute_string(("select nextval('%s')" % self.dialect.identifier_preparer.format_sequence(seq)).encode(self.dialect.encoding)) + return self.execute_string(("select nextval('%s')" % self.dialect.identifier_preparer.format_sequence(seq))) else: return None diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 769217454..61755013b 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -1814,6 +1814,8 @@ class DefaultRunner(schema.SchemaVisitor): """execute a string statement, using the raw cursor, and return a scalar result.""" conn = self.context._connection + if not self.dialect.supports_unicode_statements: + stmt = stmt.encode(self.dialect.encoding) conn._cursor_execute(self.context.cursor, stmt, params) return self.context.cursor.fetchone()[0] -- cgit v1.2.1