Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from sqlalchemy import *
- from sqlalchemy.orm import *
- url = 'postgresql+pg8000://postgres@localhost/test8000'
- engine = create_engine(url, encoding='utf-8')
- metadata = MetaData(bind=engine)
- metadata.drop_all()
- metadata = MetaData(bind=engine)
- some_table = Table(u'somes', metadata,
- Column(u'some_id', Integer, primary_key=True),
- Column(u'e', Enum('one', 'two', name=u'e'))
- )
- metadata.create_all()
- class Some(object):pass
- mapper(Some, some_table)
- session = sessionmaker(bind=engine)()
- s = Some()
- setattr(s, 'e', 'one')
- session.add(s)
- session.flush()
- session.commit()
- session.expunge_all()
- print session.query(Some).all()
- produces:
- $ python pg8000test.py
- Traceback (most recent call last):
- File "pg8000test.py", line 33, in <module>
- print session.query(Some).all()
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/query.py", line 1217, in all
- return list(self)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/query.py", line 1311, in __iter__
- return self._execute_and_instances(context)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/query.py", line 1316, in _execute_and_instances
- mapper=self._mapper_zero_or_none())
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/session.py", line 739, in execute
- clause, params or {})
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 991, in execute
- return Connection.executors[c](self, object, multiparams, params)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
- return self.__execute_context(context)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1076, in __execute_context
- self._cursor_execute(context.cursor, context.statement, context.parameters[0], context=context)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1138, in _cursor_execute
- self._handle_dbapi_exception(e, statement, parameters, cursor, context)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1136, in _cursor_execute
- self.dialect.do_execute(cursor, statement, parameters, context=context)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/default.py", line 207, in do_execute
- cursor.execute(statement, parameters)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 243, in _fn
- return fn(self, *args, **kwargs)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 312, in execute
- self._execute(operation, args)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 317, in _execute
- self.cursor.execute(new_query, *new_args)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/interface.py", line 304, in execute
- self._stmt.execute(*args, **kwargs)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/interface.py", line 139, in execute
- self._row_desc, cmd = self.c.bind(self._portal_name, self._statement_name, args, self._parse_row_desc, kwargs.get("stream"))
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/protocol.py", line 920, in _fn
- return fn(self, *args, **kwargs)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/protocol.py", line 1107, in bind
- output_fc = [types.py_type_info(f, self._record_field_names) for f in row_desc.fields]
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/types.py", line 166, in py_type_info
- raise NotSupportedError("type oid %r not mapped to py type" % type_oid)
- sqlalchemy.exc.NotSupportedError: (NotSupportedError) type oid 2015924 not mapped to py type u'SELECT somes.some_id AS somes_some_id, somes.e AS somes_e \nFROM somes' []
- (mvp2.1)percious-new-macbook:src percious$ python pg8000test.py
- Traceback (most recent call last):
- File "pg8000test.py", line 28, in <module>
- session.flush()
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/session.py", line 1307, in flush
- self._flush(objects)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/session.py", line 1385, in _flush
- flush_context.execute()
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/unitofwork.py", line 261, in execute
- UOWExecutor().execute(self, tasks)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/unitofwork.py", line 753, in execute
- self.execute_save_steps(trans, task)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/unitofwork.py", line 768, in execute_save_steps
- self.save_objects(trans, task)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/unitofwork.py", line 759, in save_objects
- task.mapper._save_obj(task.polymorphic_tosave_objects, trans)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/mapper.py", line 1420, in _save_obj
- c = connection.execute(statement.values(value_params), params)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 991, in execute
- return Connection.executors[c](self, object, multiparams, params)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
- return self.__execute_context(context)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1076, in __execute_context
- self._cursor_execute(context.cursor, context.statement, context.parameters[0], context=context)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1138, in _cursor_execute
- self._handle_dbapi_exception(e, statement, parameters, cursor, context)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1136, in _cursor_execute
- self.dialect.do_execute(cursor, statement, parameters, context=context)
- File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/default.py", line 207, in do_execute
- cursor.execute(statement, parameters)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 243, in _fn
- return fn(self, *args, **kwargs)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 312, in execute
- self._execute(operation, args)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 317, in _execute
- self.cursor.execute(new_query, *new_args)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/interface.py", line 303, in execute
- self._stmt = PreparedStatement(self.connection, query, statement_name="", *[{"type": type(x), "value": x} for x in args])
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/interface.py", line 108, in __init__
- self._parse_row_desc = self.c.parse(self._statement_name, statement, types)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/protocol.py", line 920, in _fn
- return fn(self, *args, **kwargs)
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/protocol.py", line 1094, in parse
- return reader.handle_messages()
- File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/protocol.py", line 906, in handle_messages
- raise exc
- sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('ERROR', '42804', 'column "e" is of type e but expression is of type text') u'INSERT INTO somes (e) VALUES (%s) RETURNING somes.some_id' ['one']
Add Comment
Please, Sign In to add comment