Adding to Mike's response...
I think you're using two sessions...
you select this:
user = Users.query.filter_by(username='foo').first()
and save this
db.session.add(user)
when you select, i think that's using some flask-sqlalchemy syntactic sugar
to select the session. a 'raw' sqlalchemy approach would typically be:
db.session.query(Users).filter_by(username='foo').first()
Your error when saving made this stick out:
sqlalchemy.exc.InvalidRequestError: Object '<UserInfo at 0x7f3bf01b3d30>'
is already attached to session '1' (this is '2')
If that's the case, these aren't being issued against the session you
queried with
db.session.flush()
db.session.commit()
so when you do this...
print(user.first_name)
this never hit sql. you're just printing the object state that has not
been flushed or committed.
All that being said, You should repost this on the Flask community
list/slack channel. The above code is *generally correct* and your issue is
most likely in the integration layer of flask-sqlalchemy -- and not your
usage of sqlalchemy. They can probably solve it faster there, as most
people on this group don't really know flask/flask-sqlalchemy (but everyone
here would love to know your solution).
--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper
http://www.sqlalchemy.org/
To post example code, please provide an MCVE: Minimal, Complete, and Verifiable
Example. See http://stackoverflow.com/help/mcve for a full description.
---
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.