Thank you Michael for your answers, but This does not work even with the UFT-8 encoding.
I changed my program with utf-8: ===================================================== # -*- coding: utf-8 -*- from elixir import * from sqlalchemy import create_engine class TestEnum(Entity): using_options(tablename='TEST_ENUM') myEnum = Field(Unicode(100),\ Enum('avec é', u'avec è', u'avec à'),\ colname='MY_ENUM') if __name__ == '__main__': metadata.bind = create_engine('oracle://..:..@..', encoding='utf-8', echo=True) x = u'avec é' print '=' * 20 print x.encode('utf-8') print '=' * 20 setup_all() drop_all() create_all() test = TestEnum() test.id = 1 test.myEnum = u'avec é' session.commit() The execution log : ===================================================== ==================== avec é ==================== 2012-01-17 07:10:03,375 INFO sqlalchemy.engine.base.Engine SELECT USER FROM DUAL 2012-01-17 07:10:03,375 INFO sqlalchemy.engine.base.Engine {} 2012-01-17 07:10:03,375 INFO sqlalchemy.engine.base.Engine SELECT table_name FROM all_tables WHERE table_name = :name AND owner = :schema_name 2012-01-17 07:10:03,375 INFO sqlalchemy.engine.base.Engine {'name': u'TEST_ENUM', 'schema_name': u'PBOSSE'} 2012-01-17 07:10:03,375 INFO sqlalchemy.engine.base.Engine DROP TABLE "TEST_ENUM" 2012-01-17 07:10:03,375 INFO sqlalchemy.engine.base.Engine {} 2012-01-17 07:10:03,391 INFO sqlalchemy.engine.base.Engine COMMIT 2012-01-17 07:10:03,405 INFO sqlalchemy.engine.base.Engine SELECT table_name FROM all_tables WHERE table_name = :name AND owner = :schema_name 2012-01-17 07:10:03,405 INFO sqlalchemy.engine.base.Engine {'name': u'TEST_ENUM', 'schema_name': u'PBOSSE'} 2012-01-17 07:10:03,405 INFO sqlalchemy.engine.base.Engine CREATE TABLE "TEST_ENUM" ( id INTEGER NOT NULL, "MY_ENUM" NVARCHAR2(100), PRIMARY KEY (id), CHECK ("MY_ENUM" IN ('avec é', 'avec è', 'avec à')) ) 2012-01-17 07:10:03,405 INFO sqlalchemy.engine.base.Engine {} 2012-01-17 07:10:03,453 INFO sqlalchemy.engine.base.Engine COMMIT 2012-01-17 07:10:03,453 INFO sqlalchemy.engine.base.Engine BEGIN (implicit) 2012-01-17 07:10:03,453 INFO sqlalchemy.engine.base.Engine INSERT INTO "TEST_ENUM" (id, "MY_ENUM") VALUES (:id, :MY_ENUM) 2012-01-17 07:10:03,453 INFO sqlalchemy.engine.base.Engine {'MY_ENUM': u'avec \xe9', 'id': 1} 2012-01-17 07:10:03,453 INFO sqlalchemy.engine.base.Engine ROLLBACK Traceback (most recent call last): File "E:\Data\!RefVec\dev\workspace\BdrsMD_Metadata\bdrs\models \TestEnum.py", line 38, in <module> session.commit() File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\orm\scoping.py", line 113, in do return getattr(self.registry(), name)(*args, **kwargs) File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\orm\session.py", line 645, in commit self.transaction.commit() File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\orm\session.py", line 313, in commit self._prepare_impl() File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\orm\session.py", line 297, in _prepare_impl self.session.flush() File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\orm\session.py", line 1547, in flush self._flush(objects) File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\orm\session.py", line 1616, in _flush flush_context.execute() File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\orm\unitofwork.py", line 328, in execute rec.execute(self) File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\orm\unitofwork.py", line 472, in execute uow File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\orm\mapper.py", line 2193, in _save_obj execute(statement, multiparams) File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\engine\base.py", line 1399, in execute params) File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\engine\base.py", line 1532, in _execute_clauseelement compiled_sql, distilled_params File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\engine\base.py", line 1640, in _execute_context context) File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\engine\base.py", line 1633, in _execute_context context) File "C:\Program Files\Python27\lib\site-packages\sqlalchemy-0.7.3- py2.7.egg\sqlalchemy\engine\default.py", line 330, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.IntegrityError: (IntegrityError) ORA-02290: check constraint (PBOSSE.SYS_C0017639) violated 'INSERT INTO "TEST_ENUM" (id, "MY_ENUM") VALUES (:id, :MY_ENUM)' {'MY_ENUM': u'avec \xe9', 'id': 1} The contraint in the Oracle DB is recorded as follows: "MY_ENUM" IN ('avec é', 'avec è', 'avec à ') It is normal that it does not work. ===================================================== If I do not add value domain constraint (Enum), adding to the database and is non-ACII are preserved. The program without Enum : ===================================================== # -*- coding: utf-8 -*- from elixir import * from sqlalchemy import create_engine class TestEnum(Entity): using_options(tablename='TEST_ENUM') # myEnum = Field(Unicode(100),\ # Enum('avec é', # u'avec è', # u'avec à'),\ # colname='MY_ENUM') myEnum = Field(Unicode(100), colname='MY_ENUM') if __name__ == '__main__': metadata.bind = create_engine('oracle://..:..@..', encoding='utf-8', echo=True) x = u'avec é' print '=' * 20 print x.encode('utf-8') print '=' * 20 setup_all() drop_all() create_all() test1 = TestEnum() test1.id = 1 test1.myEnum = u'avec é' session.commit() test2 = TestEnum.query.filter(TestEnum.myEnum == u'avec é').all() print '=' * 20 print test2[0].myEnum print '=' * 20 The execution log : ===================================================== ==================== avec é ==================== 2012-01-17 07:37:54,536 INFO sqlalchemy.engine.base.Engine SELECT USER FROM DUAL 2012-01-17 07:37:54,536 INFO sqlalchemy.engine.base.Engine {} 2012-01-17 07:37:54,536 INFO sqlalchemy.engine.base.Engine SELECT table_name FROM all_tables WHERE table_name = :name AND owner = :schema_name 2012-01-17 07:37:54,536 INFO sqlalchemy.engine.base.Engine {'name': u'TEST_ENUM', 'schema_name': u'PBOSSE'} 2012-01-17 07:37:54,552 INFO sqlalchemy.engine.base.Engine DROP TABLE "TEST_ENUM" 2012-01-17 07:37:54,552 INFO sqlalchemy.engine.base.Engine {} 2012-01-17 07:37:54,568 INFO sqlalchemy.engine.base.Engine COMMIT 2012-01-17 07:37:54,568 INFO sqlalchemy.engine.base.Engine SELECT table_name FROM all_tables WHERE table_name = :name AND owner = :schema_name 2012-01-17 07:37:54,568 INFO sqlalchemy.engine.base.Engine {'name': u'TEST_ENUM', 'schema_name': u'PBOSSE'} 2012-01-17 07:37:54,568 INFO sqlalchemy.engine.base.Engine CREATE TABLE "TEST_ENUM" ( id INTEGER NOT NULL, "MY_ENUM" NVARCHAR2(100), PRIMARY KEY (id) ) 2012-01-17 07:37:54,568 INFO sqlalchemy.engine.base.Engine {} 2012-01-17 07:37:54,818 INFO sqlalchemy.engine.base.Engine COMMIT 2012-01-17 07:37:54,832 INFO sqlalchemy.engine.base.Engine BEGIN (implicit) 2012-01-17 07:37:54,832 INFO sqlalchemy.engine.base.Engine INSERT INTO "TEST_ENUM" (id, "MY_ENUM") VALUES (:id, :MY_ENUM) 2012-01-17 07:37:54,832 INFO sqlalchemy.engine.base.Engine {'MY_ENUM': u'avec \xe9', 'id': 1} 2012-01-17 07:37:54,832 INFO sqlalchemy.engine.base.Engine COMMIT 2012-01-17 07:37:54,832 INFO sqlalchemy.engine.base.Engine BEGIN (implicit) 2012-01-17 07:37:54,832 INFO sqlalchemy.engine.base.Engine SELECT "TEST_ENUM".id AS "TEST_ENUM_id", "TEST_ENUM"."MY_ENUM" AS "TEST_ENUM_MY_ENUM" FROM "TEST_ENUM" WHERE "TEST_ENUM"."MY_ENUM" = :MY_ENUM_1 2012-01-17 07:37:54,832 INFO sqlalchemy.engine.base.Engine {'MY_ENUM_1': u'avec \xe9'} ==================== avec é ==================== ===================================================== What happens with Enum?? -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.