Guest User

Untitled

a guest
Jul 19th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.84 KB | None | 0 0
  1. from sqlalchemy import *
  2. from sqlalchemy.orm import *
  3. url = 'postgresql+pg8000://postgres@localhost/test8000'
  4.  
  5. engine = create_engine(url, encoding='utf-8')
  6.  
  7. metadata = MetaData(bind=engine)
  8. metadata.drop_all()
  9.  
  10. metadata = MetaData(bind=engine)
  11. some_table = Table(u'somes', metadata,
  12. Column(u'some_id', Integer, primary_key=True),
  13. Column(u'e', Enum('one', 'two', name=u'e'))
  14. )
  15.  
  16. metadata.create_all()
  17.  
  18. class Some(object):pass
  19.  
  20. mapper(Some, some_table)
  21.  
  22. session = sessionmaker(bind=engine)()
  23.  
  24. s = Some()
  25. setattr(s, 'e', 'one')
  26.  
  27. session.add(s)
  28. session.flush()
  29. session.commit()
  30.  
  31. session.expunge_all()
  32.  
  33. print session.query(Some).all()
  34.  
  35.  
  36. produces:
  37.  
  38. $ python pg8000test.py
  39. Traceback (most recent call last):
  40. File "pg8000test.py", line 33, in <module>
  41. print session.query(Some).all()
  42. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/query.py", line 1217, in all
  43. return list(self)
  44. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/query.py", line 1311, in __iter__
  45. return self._execute_and_instances(context)
  46. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/query.py", line 1316, in _execute_and_instances
  47. mapper=self._mapper_zero_or_none())
  48. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/session.py", line 739, in execute
  49. clause, params or {})
  50. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 991, in execute
  51. return Connection.executors[c](self, object, multiparams, params)
  52. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
  53. return self.__execute_context(context)
  54. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1076, in __execute_context
  55. self._cursor_execute(context.cursor, context.statement, context.parameters[0], context=context)
  56. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1138, in _cursor_execute
  57. self._handle_dbapi_exception(e, statement, parameters, cursor, context)
  58. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1136, in _cursor_execute
  59. self.dialect.do_execute(cursor, statement, parameters, context=context)
  60. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/default.py", line 207, in do_execute
  61. cursor.execute(statement, parameters)
  62. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 243, in _fn
  63. return fn(self, *args, **kwargs)
  64. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 312, in execute
  65. self._execute(operation, args)
  66. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 317, in _execute
  67. self.cursor.execute(new_query, *new_args)
  68. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/interface.py", line 304, in execute
  69. self._stmt.execute(*args, **kwargs)
  70. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/interface.py", line 139, in execute
  71. self._row_desc, cmd = self.c.bind(self._portal_name, self._statement_name, args, self._parse_row_desc, kwargs.get("stream"))
  72. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/protocol.py", line 920, in _fn
  73. return fn(self, *args, **kwargs)
  74. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/protocol.py", line 1107, in bind
  75. output_fc = [types.py_type_info(f, self._record_field_names) for f in row_desc.fields]
  76. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/types.py", line 166, in py_type_info
  77. raise NotSupportedError("type oid %r not mapped to py type" % type_oid)
  78. 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' []
  79. (mvp2.1)percious-new-macbook:src percious$ python pg8000test.py
  80. Traceback (most recent call last):
  81. File "pg8000test.py", line 28, in <module>
  82. session.flush()
  83. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/session.py", line 1307, in flush
  84. self._flush(objects)
  85. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/session.py", line 1385, in _flush
  86. flush_context.execute()
  87. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/unitofwork.py", line 261, in execute
  88. UOWExecutor().execute(self, tasks)
  89. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/unitofwork.py", line 753, in execute
  90. self.execute_save_steps(trans, task)
  91. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/unitofwork.py", line 768, in execute_save_steps
  92. self.save_objects(trans, task)
  93. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/unitofwork.py", line 759, in save_objects
  94. task.mapper._save_obj(task.polymorphic_tosave_objects, trans)
  95. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/orm/mapper.py", line 1420, in _save_obj
  96. c = connection.execute(statement.values(value_params), params)
  97. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 991, in execute
  98. return Connection.executors[c](self, object, multiparams, params)
  99. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
  100. return self.__execute_context(context)
  101. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1076, in __execute_context
  102. self._cursor_execute(context.cursor, context.statement, context.parameters[0], context=context)
  103. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1138, in _cursor_execute
  104. self._handle_dbapi_exception(e, statement, parameters, cursor, context)
  105. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/base.py", line 1136, in _cursor_execute
  106. self.dialect.do_execute(cursor, statement, parameters, context=context)
  107. File "/Users/percious/clients/mvpss/mvp2.1/src/sqlalchemy_trunk/lib/sqlalchemy/engine/default.py", line 207, in do_execute
  108. cursor.execute(statement, parameters)
  109. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 243, in _fn
  110. return fn(self, *args, **kwargs)
  111. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 312, in execute
  112. self._execute(operation, args)
  113. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/dbapi.py", line 317, in _execute
  114. self.cursor.execute(new_query, *new_args)
  115. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/interface.py", line 303, in execute
  116. self._stmt = PreparedStatement(self.connection, query, statement_name="", *[{"type": type(x), "value": x} for x in args])
  117. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/interface.py", line 108, in __init__
  118. self._parse_row_desc = self.c.parse(self._statement_name, statement, types)
  119. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/protocol.py", line 920, in _fn
  120. return fn(self, *args, **kwargs)
  121. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/protocol.py", line 1094, in parse
  122. return reader.handle_messages()
  123. File "/Users/percious/clients/mvpss/mvp2.1/src/pg8000/pg8000/protocol.py", line 906, in handle_messages
  124. raise exc
  125. 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