String/unicode distinction in bound parameters affects Postgres table reflection

Issue #881 resolved
Former user created an issue

After changes that made strings not longer accepted as bound parameter values for unicode columns, i get following errors when attempting to reflect tables with Postgres (but not with MySQL for example):

    testTable2 = sqlalchemy.Table("test_table", metadata2, autoload=True)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\schema.py", line 109, in __call__
    return type.__call__(self, name, metadata, *args, **kwargs)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\schema.py", line 234, in __init__
    metadata._get_bind(raiseerr=True).reflecttable(self, include_columns=include_columns)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\engine\base.py", line 1196, in reflecttable
    self.dialect.reflecttable(conn, table, include_columns)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\databases\postgres.py", line 435, in reflecttable
    schema=table.schema)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\engine\base.py", line 796, in execute
    return Connection.executors[c](c)(self, object, multiparams, params)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\engine\base.py", line 847, in execute_clauseelement
    return self._execute_compiled(elem.compile(dialect=self.dialect, column_keys=keys, inline=len(params) > 1), distilled_params=params)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\engine\base.py", line 856, in _execute_compiled
    context = self.__create_execution_context(compiled=compiled, parameters=distilled_params)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\engine\base.py", line 865, in __create_execution_context
    return self.engine.dialect.create_execution_context(connection=self, **kwargs)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\databases\postgres.py", line 312, in create_execution_context
    return PGExecutionContext(self, *args, **kwargs)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\engine\default.py", line 175, in __init__
    self.parameters = self.__convert_compiled_params(self.compiled_parameters)
  File "c:\svn\sqlalchemy\lib\sqlalchemy\engine\default.py", line 243, in __convert_compiled_params
    param[key.encode(encoding)](key.encode(encoding)) = processors[key](key)(compiled_params[key](key))
  File "c:\svn\sqlalchemy\lib\sqlalchemy\types.py", line 324, in process
    raise exceptions.InvalidRequestError("Received non-unicode bind param value %r" % value)
sqlalchemy.exceptions.InvalidRequestError: Received non-unicode bind param value 'test_table'

Comments (3)

  1. Log in to comment