| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
of the plugin, move it to test/bootstrap
|
|
|
|
|
|
|
|
|
| |
cuts
down on clutter, timeit says there's a teeny performance gain, at least where
the access is compared against attr.subattr. these aren't super-critical
calls anyway
- slight inlining in _class_to_mapper
|
| |
|
|
|
|
|
|
| |
version of RowProxy, as well as 2.7 style
"collections.Sequence" registration for RowProxy.
[ticket:1871]
|
|
|
|
|
| |
of the URL instead of discarding it. [ticket:1952]
- testing.only_on() accepts db specs optionally as a list
|
|
|
|
|
|
|
|
|
|
| |
new package "sqlalchemy_nose" which installs
along with "sqlalchemy". This so that the "nosetests"
script works as always but also allows the
--with-coverage option to turn on coverage before
SQLAlchemy modules are imported, allowing coverage
to work correctly.
- added some new ignores
|
|
|
|
|
| |
dialect for 0.6, courtesy Florian Apolloner.
[ticket:1906]
|
| |
|
|
|
|
|
|
|
|
| |
allowed cursor errors to be raised consistently broke
the result.lastrowid accessor. Test coverage has
been added for result.lastrowid. Note that lastrowid
is only supported by Pysqlite and some MySQL drivers,
so isn't super-useful in the general case.
|
| |
|
|
|
|
|
|
|
|
| |
by the versioning example is deprecated;
now use mapper.get_property_by_column() which
will remain the public method for this.
- turned TODO in the history example into an assertion
with a descriptive reason
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that indexes which include some or all primary
key columns, but not the same set of columns
as that of the primary key, are reflected.
Indexes which contain the identical columns
as that of the primary key are skipped within
reflection, as the index in that case is assumed
to be the auto-generated primary key index.
Previously, any index with PK columns present
would be skipped. Thanks to Kent Bower
for the patch. [ticket:1867]
- Oracle now reflects the names of primary key
constraints - also thanks to Kent Bower.
[ticket:1868]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
emitted when relationship() is configured with
ambiguous arguments. The "foreign_keys"
setting is no longer mentioned, as it is almost
never needed and it is preferable users set up
correct ForeignKey metadata, which is now the
recommendation. If 'foreign_keys'
is used and is incorrect, the message suggests
the attribute is probably unnecessary. Docs
for the attribute are beefed up. This
because all confused relationship() users on the
ML appear to be attempting to use foreign_keys
due to the message, which only confuses them
further since Table metadata is much clearer.
- If the "secondary" table has no ForeignKey metadata
and no foreign_keys is set, even though the
user is passing screwed up information, it is assumed
that primary/secondaryjoin expressions should
consider only and all cols in "secondary" to be
foreign. It's not possible with "secondary" for
the foreign keys to be elsewhere in any case.
A warning is now emitted instead of an error,
and the mapping succeeds. [ticket:1877]
- fixed incorrect "Alternate Collection Mappings" reference
in the docs, not sure if someone wants to reference
"Rows that Point to Themselves" function
- "Collection Mapping" is "Advanced Collection Mapping", this
section is troublesome since nobody really needs it but it
is public API
|
|
|
|
|
|
|
|
|
|
| |
changed to StaleDataError, and descriptive
error messages have been revised to reflect
exactly what the issue is. Both names will
remain available for the forseeable future
for schemes that may be specifying
ConcurrentModificationError in an "except:"
clause.
|
|
|
|
|
|
|
|
|
| |
correctly with the "mysqldb" dialect. Previously,
the reconnect logic would fail for OperationalError
conditions, however since MySQLdb has its
own reconnect feature, there was no symptom
here unless one watched the logs.
[ticket:1848]
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
to get_primary_keys() except returns a dict that includes the
name of the constraint, for supported backends (PG so far).
[ticket:1769]
- Postgresql reflects the name of primary key constraints,
if one exists. [ticket:1769]
|
|
|
|
| |
of an allof...getting messier here
|
|
|
|
| |
oracle's out params with returning
|
|
|
|
|
|
|
| |
- with m2m we have to go back to the previous approach of having both sides of
the DP fire off, tracking each pair of objects. history may not be consistently present
in one side or the other
- this revealed a whole lot of issues with self-referential m2m, which are fixed
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
unknown numeric is received.
- psycopg2/pg8000 dialects now aware of REAL[], FLOAT[],
DOUBLE_PRECISION[], NUMERIC[] return types without
raising an exception.
- introducing testing.provide_metadata for all these stupid little
create/drop tests
|
| |
| |
| |
| |
| |
| | |
pulled into the unit of work at all. this involves dancing around lists
of states, seeing if child objects exist, not adding excessive callcounts
while doing that, etc.
|
| |
| |
| |
| |
| | |
- some other areas where per-state deps are called and an empty result returned
are still lacking coverage.
|
|/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
on the given instance first, so that the "refresh-expire"
cascade is propagated. Previously, refresh() was
not affected in any way by the presence of "refresh-expire"
cascade. This is a change in behavior versus that
of 0.6beta2, where the "lockmode" flag passed to refresh()
would cause a version check to occur. Since the instance
is first expired, refresh() always upgrades the object
to the most recent version.
- The 'refresh-expire' cascade, when reaching a pending object,
will expunge the object if the cascade also includes
"delete-orphan", or will simply detach it otherwise.
[ticket:1754]
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
on_connect(). This method returns a callable which receives
the raw DBAPI connection after each one is created. The callable
is assembled into a first_connect/connect pool listener by the
connection strategy if non-None. Provides a simpler interface
for dialects.
|
| |
|
|
|
|
|
|
| |
mode. At the very least this establishes initial
support for cx_Oracle with Python 3.
[ticket:1670]
|
|
|
|
|
| |
- add sequences to new associationproxy tests
- test/ext passes 100% on oracle here
|
| |
|
|
|
|
|
|
|
| |
fighting chance on python 3. there's an oursql bug where it can't raise
an exception on executemany() correctly.
- needed to add "plain_query" wrappers for all the reflection methods. not sure
why this was not needed earlier.
|
|
|
|
|
|
|
|
|
|
|
|
| |
logging that remains will respond to live changes in the
log level. No significant overhead is added. [ticket:1719]
- engine: Opened up logging a bit such that isEnabledFor() is called
more often, so that changes to the log level for engine/pool
will be reflected on next connect. This adds a small
amount of method call overhead. It's negligible and will make
life a lot easier for all those situations when logging
just happens to be configured after create_engine() is called.
[ticket:1719]
|
| |
|
|
|
|
|
|
| |
coercing a returned floating point value into a string
on its way to Decimal - this allows accuracy to function
on SQLite, MySQL. [ticket:1717]
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
reimplementing the highest impact functions.
The actual speedups will depend heavily on your DBAPI and
the mix of datatypes used in your tables, and can vary from
a 50% improvement to more than 200%. It also provides a modest
(~20%) indirect improvement to ORM speed for large queries.
Note that it is *not* built/installed by default.
See README for installation instructions.
- The most common result processors conversion function were
moved to the new "processors" module. Dialect authors are
encouraged to use those functions whenever they correspond
to their needs instead of implementing custom ones.
|
|
|
|
|
|
| |
case-sensitive column name during reflect and add
"quote=True" to the generated Column, so that proper
quoting is maintained.
|
|
|
|
| |
and now supports SAVEPOINT operations.
|
| |
|
|
|
|
|
|
| |
- added READMEs to all examples in each __init__.py and added to sphinx documentation
- added versioning example
- removed vertical/vertical.py, the dictlikes are more straightforward
|