-
Notifications
You must be signed in to change notification settings - Fork 251
Closed
Description
When buffer is used as PrimaryKey, select always fails:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-24-08cbfe0fdb1f> in <module>()
----> 1 q[:]
/home/vader/.pyenv/versions/2.7.14/envs/tribler/lib/python2.7/site-packages/pony/orm/core.pyc in __getitem__(query, key)
/home/vader/.pyenv/versions/2.7.14/envs/tribler/lib/python2.7/site-packages/pony/utils/utils.pyc in cut_traceback(func, *args, **kwargs)
75 if module_name.startswith('pony.utils') and tb.tb_frame.f_code.co_name == 'throw':
76 reraise(exc_type, exc, last_pony_tb)
---> 77 reraise(exc_type, exc, full_tb)
78 finally:
79 del exc, full_tb, tb, last_pony_tb
/home/vader/.pyenv/versions/2.7.14/envs/tribler/lib/python2.7/site-packages/pony/utils/utils.pyc in cut_traceback(func, *args, **kwargs)
58 return func(*args, **kwargs)
59
---> 60 try: return func(*args, **kwargs)
61 except AssertionError: raise
62 except Exception:
/home/vader/.pyenv/versions/2.7.14/envs/tribler/lib/python2.7/site-packages/pony/orm/core.pyc in __getitem__(query, key)
5692 stop = key.stop
5693 if stop is None:
-> 5694 if not start: return query._fetch()
5695 else: throw(TypeError, "Parameter 'stop' of slice object should be specified")
5696 else: throw(TypeError, 'If you want apply index to query, convert it to list first')
/home/vader/.pyenv/versions/2.7.14/envs/tribler/lib/python2.7/site-packages/pony/orm/core.pyc in _fetch(query, range)
5345 entity = translator.expr_type
5346 result = entity._fetch_objects(cursor, attr_offsets, for_update=query._for_update,
-> 5347 used_attrs=translator.get_used_attrs())
5348 elif len(translator.row_layout) == 1:
5349 func, slice_or_offset, src = translator.row_layout[0]
/home/vader/.pyenv/versions/2.7.14/envs/tribler/lib/python2.7/site-packages/pony/orm/core.pyc in _fetch_objects(entity, cursor, attr_offsets, max_fetch_count, for_update, used_attrs)
3989 for row in rows:
3990 real_entity_subclass, pkval, avdict = entity._parse_row_(row, attr_offsets)
-> 3991 obj = real_entity_subclass._get_from_identity_map_(pkval, 'loaded', for_update)
3992 if obj._status_ in del_statuses: continue
3993 obj._db_set_(avdict)
/home/vader/.pyenv/versions/2.7.14/envs/tribler/lib/python2.7/site-packages/pony/orm/core.pyc in _get_from_identity_map_(entity, pkval, status, for_update, undo_funcs, obj_to_init)
4083 cache_index = cache.indexes[pk_attrs]
4084 if pkval is None: obj = None
-> 4085 else: obj = cache_index.get(pkval)
4086
4087 if obj is None: pass
TypeError: writable buffers are not hashableSteps to reproduce:
from pony import orm
db = orm.Database()
class Bla(db.Entity):
smt = orm.PrimaryKey(buffer, auto=False)
db.bind(provider='sqlite', filename=':memory:')
db.generate_mapping(create_tables=True)
a = Bla(smt=str(0x01)*20)
q = orm.select(p for p in Bla)[:]