When working with Oracle, we use the `convert_unicode` parameter, and
use Python unicode objects everywhere. This works fabulously, and we
even set `assert_unicode` to 'error' to make sure that nothing else is
ever used.
However, when reflecting a table using the `autoload` keyword, these
properties are not set on the resulting columns. This leads to
interesting errors such as:
sqlalchemy.exc.NotSupportedError: (NotSupportedError)
Variable_TypeByValue(): unhandled data type unicode 'INSERT INTO
testtable5 (id, b) VALUES (:id, :b)' {'b': u'test', 'id': None}
Is there a way to instrument the columns by telling the autoload
mechanism that I would like to use `convert_unicode` for the columns
where it makes sense, or by modifying the reflected columns after the
table has been loaded?
We're using SQLAlchemy 0.5. For convenience, here is a piece of code
to test it with:
from sqlalchemy import create_engine, MetaData, Table, String,
Integer, CLOB, Column, Sequence
users_metadata = MetaData()
table_name = 'testtable'
testtable = Table(
table_name, users_metadata,
Column('id', Integer, Sequence(table_name + '_id_sequence',
start=1, increment=1), primary_key=True),
Column('b', CLOB(convert_unicode=True,
assert_unicode='error')))
engine = create_engine('oracle://localhost/...', echo=True)
connection = engine.connect()
users_metadata.bind = connection
testtable.create(engine)
# works
connection.execute(testtable.insert(values={'b': u'test'}))
metadata = MetaData(bind=connection)
testtable = Table(table_name, metadata, autoload=True)
# fail
connection.execute(testtable.insert(values={'b': u'test'}))
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---