Thanks for clarifying with a full answer!
> This should not be construed to mean that you should only use the ORM
> with SERIALIZABLE isolation. It's instead just something to be aware of.
> You can of course expire any object or individual attribute at any time.
In
> this case, if you were to add s2.expire(s2c1) on line 88, you'd then get
the
> "222" value on the next check as it would emit a SELECT.
But it does seem to emit a select! The output surrounding the line 88 query
is below:
Querying s2 again (whose transaction is still open) to see what it gets for
c1...
SQL >> SELECT counter.id AS counter_id, counter.name AS counter_name,
counter.count AS counter_count
SQL >> FROM counter
SQL >> WHERE counter.name = %(name_1)s
SQL >> {'name_1': 'C1'}
s2 gets C1.count = 1
... so what were those SQL emmissions about? They did not seem to arrive at
the database (based on the result, anyway).
I had thought it may be identity map stuff, regardless of what SQL I saw
being emitted, which is why I tried the direct query in line 96. The
combination of "how the heck did SQLAlchemy know to emit SQL here?" and "ok
- SQL was emitted, but why didn't it get the response I expect for READ
COMMITTED?" both drove the line 96 check.
Note that if I add the s2.expire(s2c1) before the line 88 query as you
suggest, the seemingly emitted SQL output is no different, except that the
value actually gets updated:
Querying s2 again (whose transaction is still open) to see what it gets for
c1...
SQL >> SELECT counter.id AS counter_id, counter.name AS counter_name,
counter.count AS counter_count
SQL >> FROM counter
SQL >> WHERE counter.name = %(name_1)s
SQL >> {'name_1': 'C1'}
s2 gets C1.count = 222
What is happening? I always trusted the logger output for letting me know
when the DB was actually being hit, but now I'm not sure I can.
Thanks,
Russ
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/sqlalchemy/-/PenYdOGI1hwJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.