| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'm doing something to finish the horizontal shard job.
The examle is sharding to multiple database . And i just do it for
multipls tables in one database.
there is many tables just like msg_00,msg_01..... msg_99
defind the class like Msg() map the tables .
===============================
m = Msg
number = int(uid)%100
tablename = 'msg_%02d'%(number)
m.__uuid__ = uid
m.__table__.name = tablename
===============================
now "m" mapping the table msg_xx .
It works in the select sql.
but fail in the session.add(newmessage) because the sqlalchemy has cache
connection . event one table is Table(msg_00) and another is Table
(msg_01)
So, i edit the memo key . then there is diff insert object .
------------------
It's simple change and useful. It‘s safe for the old version .
sorry for my poor english.
|
| |
|
|
| |
[ticket:2777]
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
provided via the :func:`.event.remove` function.
[ticket:2268]
- reorganization of event.py module into a package; with the addition of the
docstring work as well as the new registry for removal, there's a lot more code now.
the package separates concerns and provides a top-level doc for each subsection
of functionality
- the remove feature works by providing the EventKey object which associates
the user-provided arguments to listen() with a global, weak-referencing registry.
This registry stores a collection of _ListenerCollection and _DispatchDescriptor
objects associated with each set of arguments, as well as the wrapped function
which was applied to that collection. The EventKey can then be recreated for
a removal, all the _ListenerCollection and _DispatchDescriptor objects are located,
and the correct wrapped function is removed from each one.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
:class:`.AttributeImpl` as an "initiator" token has been changed;
the object is now an event-specific object called :class:`.attributes.Event`.
Additionally, the attribute system no longer halts events based
on a matching "initiator" token; this logic has been moved to be
specific to ORM backref event handlers, which are the typical source
of the re-propagation of an attribute event onto subsequent append/set/remove
operations. End user code which emulates the behavior of backrefs
must now ensure that recursive event propagation schemes are halted,
if the scheme does not use the backref handlers. Using this new system,
backref handlers can now peform a
"two-hop" operation when an object is appended to a collection,
associated with a new many-to-one, de-associated with the previous
many-to-one, and then removed from a previous collection. Before this
change, the last step of removal from the previous collection would
not occur.
[ticket:2789]
|
| |
|
|
|
|
| |
"propagate" flags could potentially be mis-configured in some
"unmapped base class" configurations. Also in 0.8.3.
[ticket:2786]
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
when loading mapped entities. The function overhead of applying
a per-object deferred callable to an instance at load time was
significantly higher than that of just loading the data from the row
(note that ``defer()`` is meant to reduce DB/network overhead, not
necessarily function call count); the function call overhead is now
less than that of loading data from the column in all cases. There
is also a reduction in the number of "lazy callable" objects created
per load from N (total deferred values in the result) to 1 (total
number of deferred cols).
[ticket:2778]
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with @_legacy_signature, will inspect incoming listener functions
to see if they match an older signature, will wrap into a newer sig
- add an event listen argument named=True, will send all args as
kw args so that event listeners can be written with **kw, any combination
of names
- add a doc system to events that writes out the various calling styles
for a given event, produces deprecation messages automatically.
a little concerned that it's a bit verbose but will look at it up
on RTD for awhile to get a feel.
- change the calling signature for bulk update/delete events - we have
the BulkUD object right there, and there's at least six or seven things
people might want to see, so just send the whole BulkUD in
[ticket:2775]
|
| | |
|
| |
|
|
|
|
|
| |
when an object we moved from "persistent" to "pending"
using the :func:`.make_transient` function, for operations
involving collection-based backrefs.
[ticket:2773]
|
| |
|
|
| |
value is present
|
| |
|
|
|
| |
mapped class where the polymorphic discriminator has been assigned
to a value that is invalid for the class. [ticket:2750]
|
| |
|
|
|
| |
adapter to an aliased-mapped, non-polymorphic selectable that prevented us from referring
directly to that selectable.
|
| | |
|
| |
|
|
|
|
|
| |
passes in AliasedInsp and allows more flexibility.
- rework the AliasedClass/AliasedInsp relationship so that AliasedInsp has
all state and functionality. AliasedClass is just a facade.
[ticket:2756]
|
| |
|
|
|
|
|
| |
entities against the same base class joined to each other as well
would not track columns on the base table independently of each other if
the string of joins were more than two entities long. Also in 0.8.2.
[ticket:2759]
|
| |
|
|
|
| |
would produce a parenthesized expression not accepted by some databases.
[ticket:2754]
|
| |
|
|
|
|
| |
the :func:`.aliased` function. Previously, composite attributes
wouldn't work correctly in comparison operations when aliasing
was applied. Also in 0.8.2. [ticket:2755]
|
| |
|
|
| |
- docs docs docs
|
| |
|
|
|
|
|
|
|
|
|
| |
fetched when joining/joinedloading across a many-to-many
relationship to a single-table-inheriting
subclass with a specific discriminator value, due to "secondary"
rows that would come back. The "secondary" and right-side
tables are now inner joined inside of parenthesis for all
ORM joins on many-to-many relationships so that the left->right
join can accurately filtered.
[ticket:2369]
|
| | |
|
| |
|
|
|
|
|
| |
query.join(), but if
you're dealing with aliased() or with_polymorphic() you need to say "flat=True". Just the one
flag though, "flat" implies "aliased".
|
| | |
|
| | |
|
| |
|
|
|
|
| |
- clean up inspect() calls within query._join()
- make sure join.alias(flat) propagates
- fix almost all assertion tests
|
| |
|
|
| |
- two suite of SQL assertions converted
|
| |
|
|
|
|
| |
SQL assertions
might even be most of the tests we need (though dedicated sql tests would be needed anyway)
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
but would
like to improve upon query.statement needing to do this
|
| |
|
|
|
|
| |
step
when we do query.count() are showing
|
| |
|
|
|
| |
- to account for query._attributes/context.attributes, just pass
the attributes dict directly to the PathRegistry methods
|
| |
|
|
|
|
|
| |
evaluation invoked by :meth:`.Query.update` and :meth:`.Query.delete`
would hit upon unsupported ``True`` and ``False`` symbols
which now appear due to the usage of ``IS``.
[ticket:2737]
|
| |
|
|
|
|
| |
method has been turned off. The specific behavior is now
availble via a new method :class:`.Query.select_entity_from`.
[ticket:2736]
|
| |\
| |
| |
| |
| |
| |
| | |
Conflicts:
lib/sqlalchemy/dialects/postgresql/hstore.py
lib/sqlalchemy/util/__init__.py
lib/sqlalchemy/util/compat.py
|
| | | |
|
| | |
| |
| |
| | |
as possible
|
| | | |
|
| | | |
|
| | |\ |
|
| | |\ \ |
|
| | | | | |
|
| | |\ \ \ |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
- went through examples/ and cleaned out excess list() calls
|
| | |_|_|/
|/| | | |
|
| | |_|/
|/| |
| | |
| | |
| | |
| | |
| | |
| | | |
made the check for recursion overflow in self-referential
eager joining too loose, missing a particular circumstance
where a subclass had lazy="joined" or "subquery" configured
and the load was a "with_polymorphic" against the base.
[ticket:2481]
|
| | |/
|/|
| |
| | |
[ticket:2725]
|