Hi all,
I recently tried to update SQLAlchemy from 0.9.4 to 1.0.4 in a client's
project. However, I run into an error that is not there with 0.9.4.
It happens for this type of query:
q = DBSession.query(User) \
.filter(User.profile_id.in_(profile_ids)) \
.join(Profile)
q = q.outerjoin(
CouplePhoto,
and_(
User.profile_id==CouplePhoto.profile_id,
CouplePhoto.avatar==True
)
)
q = q.with_entities(User.profile_id, User.given_name, User.zipcode,
CouplePhoto.filename, User.gender, Profile.sex)
users_data = q.all()
for u in users_data:
if u.filename:
*# the next line causes the error in 1.0.4*
* u.filename = 'something'*
In 0.9.4, the type of "u" was "KeyedTuple" and in 1.0.4, it's "result". The
error is "AttributeError: can't set attribute".
The goal of this assignation is to recompute the filename according to the
original filename (to show a thumb instead of original). It is not saved in
the database.
Now, I know this is not necessarily good design and I would not have done
it that way myself. But the code base is probably full of this type of
thing, mixed with business logic, and trying to fix them is clearly not
doable in the short term.
And we have to update SQLAlchemy, because some circular reference issue was
fixed when using Alembic somewhere between 0.9.4 and 1.0.4.
Is there anything I should be aware of to help with this?
Thanks in advance.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.