modified version (works in py2.3/2.4!) that uses a threading.RLock
for a mutex. this is to fix a reported case where a ConnectionFairy's
__del__() method got called within the Queue's get() method, which
- then returns its connection to the Queue via the the put() method,
+ then returns its connection to the Queue via the put() method,
causing a reentrant hang unless threading.RLock is used.
.. change::
:tickets:
added a mutex to the mapper compilation step. ive been reluctant to add any
- kind of threading anything to SA but this is one spot that its its really
+ kind of threading anything to SA but this is one spot that its really
needed since mappers are typically "global", and while their state does not
change during normal operation, the initial compilation step does modify
internal state significantly, and this step usually occurs not at
new synonym() behavior: an attribute will be placed on the mapped
class, if one does not exist already, in all cases. if a property
already exists on the class, the synonym will decorate the property
- with the appropriate comparison operators so that it can be used in in
+ with the appropriate comparison operators so that it can be used in
column expressions just like any other mapped attribute (i.e. usable in
filter(), etc.) the "proxy=True" flag is deprecated and no longer means
anything. Additionally, the flag "map_column=True" will automatically
:tickets:
PG reflection, upon seeing the default schema name being used explicitly
- as the "schema" argument in a Table, will assume that this is the the
+ as the "schema" argument in a Table, will assume that this is the
user's desired convention, and will explicitly set the "schema" argument
in foreign-key-related reflected tables, thus making them match only
with Table constructors that also use the explicit "schema" argument
:tickets: 810
Fixed breakage with postgres and multiple two-phase transactions. Two-phase
- commits and and rollbacks didn't automatically end up with a new transaction
+ commits and rollbacks didn't automatically end up with a new transaction
as the usual dbapi commits/rollbacks do.
.. change::
:tickets: 1953
The cx_oracle "decimal detection" logic, which takes place
- for for result set columns with ambiguous numeric characteristics,
+ for result set columns with ambiguous numeric characteristics,
now uses the decimal point character determined by the locale/
NLS_LANG setting, using an on-first-connect detection of
this character. cx_oracle 5.0.3 or greater is also required
:tickets: 1071
Postgresql now reflects sequence names associated with
- SERIAL columns correctly, after the name of of the sequence
+ SERIAL columns correctly, after the name of the sequence
has been changed. Thanks to Kumar McMillan for the patch.
.. change::
COMMIT
{stop}<sqlalchemy.engine.result.ResultProxy object at 0x...>
-Above, because we specified all three columns in the the ``execute()`` method,
+Above, because we specified all three columns in the ``execute()`` method,
the compiled :class:`~.expression.Insert` included all three
columns. The :class:`~.expression.Insert` statement is compiled
at execution time based on the parameters we specified; if we specified fewer
The implementation for :meth:`.ColumnOperators.__add__` is consulted
by an owning SQL expression, by instantiating the :class:`.TypeEngine.Comparator` with
-itself as as the ``expr`` attribute. The mechanics of the expression
+itself as the ``expr`` attribute. The mechanics of the expression
system are such that operations continue recursively until an
expression object produces a new SQL expression construct. Above, we
could just as well have said ``self.expr.op("goofy")(other)`` instead
* **Standard Setuptools** - When using `setuptools <http://pypi.python.org/pypi/setuptools/>`_,
SQLAlchemy can be installed via ``setup.py`` or ``easy_install``, and the C
extensions are supported. setuptools is not supported on Python 3 at the time
- of of this writing.
+ of this writing.
* **Distribute** - With `distribute <http://pypi.python.org/pypi/distribute/>`_,
SQLAlchemy can be installed via ``setup.py`` or ``easy_install``, and the C
extensions as well as Python 3 builds are supported.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A subtransaction indicates usage of the :meth:`.Session.begin` method in conjunction with
-the ``subtransactions=True`` flag. This produces a a non-transactional, delimiting construct that
+the ``subtransactions=True`` flag. This produces a non-transactional, delimiting construct that
allows nesting of calls to :meth:`~.Session.begin` and :meth:`~.Session.commit`.
It's purpose is to allow the construction of code that can function within a transaction
both independently of any external code that starts a transaction,