Sql Alchemy> TypeError: объект 'instancemethod' не поддерживает назначение элементов - PullRequest
2 голосов
/ 06 сентября 2010

Вот что у меня есть:

<code>
from sqlalchemy import *
from sqlalchemy.orm import *
from web.models.card import *
connectionString = "postgresql://www:www@localhost/prod"
databaseEngine = create_engine(connectionString)
sessionFactory = sessionmaker(autoflush = True, autocommit = False, bind = databaseEngine)
session = sessionFactory()
CardsCollection = session.query(card).all()
_content = {}
for index in range(0, len(CardsCollection)):
    c = CardsCollection[index]
    _content[index] = c
print json.dumps(_content)

И вот ошибка:

<code>
Traceback (most recent call last):
  File "/home/src/py/raspberry/src/dictionaryTest.py", line 15, in 
    CardsCollection = session.query(card).all()
  File "/usr/local/lib/python2.6/dist-packages/sqlalchemy/orm/query.py", line 1453, in all
    return list(self)
  File "/usr/local/lib/python2.6/dist-packages/sqlalchemy/orm/query.py", line 1676, in instances
    rows = [process[0](row, None) for row in fetch]
  File "/usr/local/lib/python2.6/dist-packages/sqlalchemy/orm/mapper.py", line 2234, in _instance
    populate_state(state, dict_, row, isnew, only_load_props)
  File "/usr/local/lib/python2.6/dist-packages/sqlalchemy/orm/mapper.py", line 2113, in populate_state
    populator(state, dict_, row)
  File "/usr/local/lib/python2.6/dist-packages/sqlalchemy/orm/strategies.py", line 127, in new_execute
    dict_[key] = row[col]
TypeError: 'instancemethod' object does not support item assignment

Может ли кто-нибудь помочь мне с этим?Я попробовал несколько вещей и исследовал, как работают словари ... но это просто не бросается в глаза.

[отредактируйте для странного разрешения] Очевидно, что именно переопределение метода self.__dict__(self) на модели карты - это то, что он сделал.Я не совсем уверен, почему, хотя.

1 Ответ

1 голос
/ 14 сентября 2010

__dict__ - это специальный атрибут , содержащий текущее состояние экземпляра, перезапись его методом, безусловно, приведет к проблемам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...