Added doc block for batch_fetch
This commit is contained in:
@@ -4,6 +4,12 @@ Changelog
|
|||||||
Here you can see the full list of changes between each SQLAlchemy-Utils release.
|
Here you can see the full list of changes between each SQLAlchemy-Utils release.
|
||||||
|
|
||||||
|
|
||||||
|
0.16.3 (2013-08-05)
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
- Added batch_fetch function
|
||||||
|
|
||||||
|
|
||||||
0.16.2 (2013-08-01)
|
0.16.2 (2013-08-01)
|
||||||
^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
@@ -2,10 +2,12 @@ from collections import defaultdict
|
|||||||
import six
|
import six
|
||||||
import datetime
|
import datetime
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
from sqlalchemy.orm import defer
|
from sqlalchemy.orm import defer, RelationshipProperty
|
||||||
|
from sqlalchemy.orm.attributes import set_committed_value
|
||||||
from sqlalchemy.orm.mapper import Mapper
|
from sqlalchemy.orm.mapper import Mapper
|
||||||
from sqlalchemy.orm.query import _ColumnEntity, Query
|
|
||||||
from sqlalchemy.orm.properties import ColumnProperty
|
from sqlalchemy.orm.properties import ColumnProperty
|
||||||
|
from sqlalchemy.orm.query import _ColumnEntity, Query
|
||||||
|
from sqlalchemy.orm.session import object_session
|
||||||
from sqlalchemy.orm.util import AliasedInsp
|
from sqlalchemy.orm.util import AliasedInsp
|
||||||
from sqlalchemy.schema import MetaData, Table, ForeignKeyConstraint
|
from sqlalchemy.schema import MetaData, Table, ForeignKeyConstraint
|
||||||
from sqlalchemy.sql.expression import desc, asc, Label
|
from sqlalchemy.sql.expression import desc, asc, Label
|
||||||
@@ -388,12 +390,28 @@ def render_statement(statement, bind=None):
|
|||||||
return Compiler(bind.dialect, statement).process(statement)
|
return Compiler(bind.dialect, statement).process(statement)
|
||||||
|
|
||||||
|
|
||||||
from sqlalchemy.orm.session import object_session
|
|
||||||
from sqlalchemy.orm import RelationshipProperty
|
|
||||||
from sqlalchemy.orm.attributes import set_committed_value
|
|
||||||
|
|
||||||
|
|
||||||
def batch_fetch(entities, attr):
|
def batch_fetch(entities, attr):
|
||||||
|
"""
|
||||||
|
Batch fetch given relationship attribute for collection of entities.
|
||||||
|
|
||||||
|
This function is in many cases a valid alternative for SQLAlchemy's
|
||||||
|
subqueryload and performs lot better.
|
||||||
|
|
||||||
|
:param entities: list of entities of the same type
|
||||||
|
:param attr:
|
||||||
|
Either InstrumentedAttribute object or a string representing the name
|
||||||
|
of the instrumented attribute
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
|
||||||
|
from sqlalchemy_utils import batch_fetch
|
||||||
|
|
||||||
|
|
||||||
|
users = session.query(User).limit(20).all()
|
||||||
|
|
||||||
|
batch_fetch(users, User.phonenumbers)
|
||||||
|
"""
|
||||||
if entities:
|
if entities:
|
||||||
first = entities[0]
|
first = entities[0]
|
||||||
if isinstance(attr, six.string_types):
|
if isinstance(attr, six.string_types):
|
||||||
|
Reference in New Issue
Block a user