for inserts, not really. if you want to guard against duplicate, the pattern
is use a savepoint (begin_nested()), catch integrity error, then use the new
row if someone else inserted it.this is the more performant option as well
as opposed to pessimistic locking.
How can the query/merge or query/add be performed atomically? What would
happen if between the two calls another process inserted a row with the
same unique key? Wouldn't the `s.merge()` then trigger a
`psycopg2.errors.UniqueViolation` exception (in postgres case) when the new
row insert is
On Wed, Feb 3, 2021, at 6:23 PM, Christian Henning wrote:
> Hi Mike,
>
> thanks for your advice! I'll make the changes.
>
> But let me ask you one thing. My classmethod create() is but more complex
> than I have posted. It's meant to catch IntegrityError so that unique
> constraints are
Hi Mike,
thanks for your advice! I'll make the changes.
But let me ask you one thing. My classmethod create() is but more complex
than I have posted. It's meant to catch IntegrityError so that unique
constraints are enforced. Image a User table has a "unique" constraint on
the name. When I
the session.commit() method expires all attributes by default:
https://docs.sqlalchemy.org/en/13/orm/session_basics.html#committing
your code is organized in an unusual way such that transactions are being
committed inside of attribute assignment operations:
I don't understand why SQLAlchemy gives me the following warning:
SAWarning: This collection has been invalidated.
util.warn("This collection has been invalidated.")
Here is a minimal code example:
-
-
import sqlalchemy
print(sqlalchemy.__version__)
from
I think what the OP would have to do is write a UNION, that is:
s.query(Child1).filter(Child1.thing == "thing").union(
s.query(Child2).filter(Child2.thing == "thing")
)
that's how this problem is approached in SQL.With SQLAlchemy, any problem
should be solved by considering the desired
I don't think you're going to find a way to do that built in to SQLAlchemy.
When you write "session.query(Parent)", SQLAlchemy constructs a query
against the "parent" table. But to filter by your "is_done" property,
it would suddenly need to join every child table into the query and
construct a
The structure I have created is like below:
class Parent(Base): __tablename__ = 'parent' id = Field(
Integer, primary_key=True ) type_ =
Field( String(50), readonly=True )
__mapper_args__ = {