AttributeError: 'unicode' objet n'a pas d'attribut "_sa_instance_state'
Je suis en train d'apprendre comment utiliser SQLAlchemy. Je suis en train de le faire, mais le stockage de titre et lien dans deux tableaux distincts:
temp = Submissions(title=u'Facebook Homepage', link=u'http://facebook.com')
session.add(temp)
session.flush()
transaction.commit()
via:
class Links(Base):
__tablename__ = 'links'
id = Column(Integer, primary_key=True)
link = Column(Text)
created = Column(TIMESTAMP(), default=datetime.now())
def __init__(self, link):
self.link = link
class Submissions(Base):
__tablename__ = 'submissions'
id = Column(Integer, primary_key=True)
created = Column(TIMESTAMP(), default=datetime.now())
title = Column(Text)
link_id = Column(Integer, ForeignKey('links.id'))
link = relation(Links)
def __init__(self, title, link):
self.title = title
self.link = link
Cependant, j'ai toujours cette erreur:
AttributeError: 'unicode' object has no attribute '_sa_instance_state'
Ce qui se passe? Est-il une meilleure façon de ce code?
OriginalL'auteur Jonathan Ong | 2011-09-03
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas tout à fait le faire avec
relationship
.Vous avez besoin de prendre des dispositions pour
Link
d'être regardé, d'une certaine façon.La plus évidente est de simplement regarder directement.
Vous pouvez également utiliser hybride attributs pour obtenir quelque chose qui ressemble un peu plus comme votre exemple, mais son beaucoup plus compliquée.
aussi, c'est
relationship
,relation
est obsolète.ne devrait-elle pas être
session.add(submission)
?OriginalL'auteur SingleNegationElimination
Je voudrais configurer la relation que one-to-one (
uselist=False
) et ajouter une propriété qui serait envelopper lelink
relation. Le SA configuration pourrait alors ressembler à ci-dessous et votre code devrait fonctionner très bien la création, la mise à jour et la suppression le lien. Vous pourriez avoir besoin pour configurer le rapport pour avoirdelete-orphan
option dans uncascade
.OriginalL'auteur van