Thanks, this helps some to narrow it down.
Trying to zoom in:
- why would sqla try to UPDATE (instead of INSERT) a row in the database,
when the row/object was never committed before?
- when you flush an object to the database and then close the session that
flushed (no commit), what happens to the flushed data?
- if an object is in a session and it has_identity, why would accessing
obj.id (id is the primary key) fail (see above)?
- Is there (in principle) a problem with:
+ having an object of a mapped class which was never committed
(but maybe was added to a session and flushed, after which the session was
closed)
+ setting an attribute of that object with another object that was
queried from the database
+ committing the first object to the database?
Cheers, Lars
On Saturday, February 1, 2014 3:42:09 AM UTC+1, Michael Bayer wrote:
>
>
> On Jan 31, 2014, at 8:11 PM, lars van gemerden
> <[email protected]<javascript:>>
> wrote:
>
>
> "this means an object was meant to be UPDATEed via the ORM, however the
> row which is the target of the UPDATE is missing. Either the primary key
> of this row changed somehow, or the row was deleted, *or* the row is not
> visible to your transaction (this seems to be your case)."
>
> - could the error also occur when the object was never committed to the
> database (which seems to be the case; the commit where the error occurs
> should be the first time the Company object is committed to the database)?
>
>
> sure
>
> - this seems to suggest that it is possible that a row is in the
> database, but that it is not visible to a transaction; is that possible?
>
>
> absolutely, the link http://en.wikipedia.org/wiki/Transaction_isolation is
> relevant here
>
>
>
--
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/groups/opt_out.