2 Stimmen

Sql Alchemy > TypeError: 'instancemethod'-Objekt unterstützt keine Elementzuweisung

Hier ist, was ich habe:

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)

Und hier liegt der Fehler:

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

Kann mir jemand bei dieser Frage helfen? Ich habe versucht, ein paar Dinge, und recherchiert, wie Wörterbücher funktionieren ... aber seine einfach nicht springen auf mich.

[Bearbeiten für seltsame Auflösung] Offensichtlich wird das Überschreiben der self.__dict__(self) Methode des Kartenmodells ist die Ursache dafür. Ich bin mir allerdings nicht ganz sicher, warum.

1voto

Denis Otkidach Punkte 30334

__dict__ ist eine spezielles Attribut Da der aktuelle Zustand der Instanz erhalten bleibt, wird das Überschreiben mit der Methode sicherlich zu Problemen führen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X