.. versionchanged:: 1.4.8 the tuple returned by
:attr:`_engine.CursorResult.inserted_primary_key` is now a named tuple
- fullfilled by returning it as a :class:`_result.Row` object.
+ fulfilled by returning it as a :class:`_result.Row` object.
.. _tutorial_core_insert_values_clause:
^^^^^^^^^^^^^
Now that we are selecting from multiple tables and using joins, we quickly
-run into the case where we need to refer to the same table mutiple times
+run into the case where we need to refer to the same table multiple times
in the FROM clause of a statement. We accomplish this using SQL **aliases**,
which are a syntax that supplies an alternative name to a table or subquery
from which it can be referred towards in the statement.
and :class:`_orm.Session` objects. These flags fully enable 2.0-compatibility
mode and allow the code in the tutorial to proceed fully. When using the
``future`` flag with the :func:`_sa.create_engine` function, the object
-returned is a sublass of :class:`sqlalchemy.engine.Engine` described as
+returned is a subclass of :class:`sqlalchemy.engine.Engine` described as
:class:`sqlalchemy.future.Engine`. This tutorial will be referring to
:class:`sqlalchemy.future.Engine`.
spin off many additional queries that can add up (otherwise known as the
:term:`N plus one problem`), and to make matters worse they are emitted
implicitly. These implicit queries may not be noticed, may cause errors
-when they are attempted after there's no longer a database tranasction
+when they are attempted after there's no longer a database transaction
available, or when using alternative concurrency patterns such as :ref:`asyncio
<asyncio_toplevel>`, they actually won't work at all.
The :func:`_orm.joinedload` strategy is best suited towards loading
related many-to-one objects, as this only requires that additional columns
are added to a primary entity row that would be fetched in any case.
-For greater effiency, it also accepts an option :paramref:`_orm.joinedload.innerjoin`
+For greater efficiency, it also accepts an option :paramref:`_orm.joinedload.innerjoin`
so that an inner join instead of an outer join may be used for a case such
as below where we know that all ``Address`` objects have an associated
``User``:
also leverage that JOIN in order to eagerly load the contents of the
``Address.user`` attribute on each ``Address`` object returned. This is
essentially that we are using "joined eager loading" but rendering the JOIN
-ourselves. This common use case is acheived by using the
+ourselves. This common use case is achieved by using the
:func:`_orm.contains_eager` option. This option is very similar to
:func:`_orm.joinedload`, except that it assumes we have set up the JOIN
ourselves, and it instead only indicates that additional columns in the COLUMNS