Fix docs
This commit is contained in:
@@ -59,7 +59,7 @@ LocaleType
|
|||||||
IPAddressType
|
IPAddressType
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. module:: sqlalchemy_utils.types.ip_addresss
|
.. module:: sqlalchemy_utils.types.ip_address
|
||||||
|
|
||||||
.. autoclass:: IPAddressType
|
.. autoclass:: IPAddressType
|
||||||
|
|
||||||
|
@@ -4,7 +4,10 @@ Utility classes
|
|||||||
QueryChain
|
QueryChain
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. module:: sqlalchemy_utils.query_chain
|
.. automodule:: sqlalchemy_utils.query_chain
|
||||||
|
|
||||||
|
API
|
||||||
|
^^^
|
||||||
|
|
||||||
.. autoclass:: QueryChain
|
.. autoclass:: QueryChain
|
||||||
:members:
|
:members:
|
||||||
|
@@ -1,3 +1,79 @@
|
|||||||
|
"""
|
||||||
|
QueryChain is a wrapper for sequence of queries.
|
||||||
|
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* Easy iteration for sequence of queries
|
||||||
|
* Limit and offset which are applied to all queries in the chain
|
||||||
|
* Smart __getitem__ support
|
||||||
|
|
||||||
|
|
||||||
|
Initialization
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
QueryChain takes iterable of queries as first argument. Additionally limit and
|
||||||
|
offset parameters can be given
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
chain = QueryChain([session.query(User), session.query(Article)])
|
||||||
|
|
||||||
|
chain = QueryChain(
|
||||||
|
[session.query(User), session.query(Article)],
|
||||||
|
limit=4
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Simple iteration
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
::
|
||||||
|
|
||||||
|
chain = QueryChain([session.query(User), session.query(Article)])
|
||||||
|
|
||||||
|
for obj in chain:
|
||||||
|
print obj
|
||||||
|
|
||||||
|
|
||||||
|
Limit and offset
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Lets say you have 5 blog posts, 5 articles and 5 news items in your
|
||||||
|
database.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
chain = QueryChain(
|
||||||
|
[
|
||||||
|
session.query(BlogPost),
|
||||||
|
session.query(Article),
|
||||||
|
session.query(NewsItem)
|
||||||
|
],
|
||||||
|
limit=5
|
||||||
|
)
|
||||||
|
|
||||||
|
list(chain) # all blog posts but not articles and news items
|
||||||
|
|
||||||
|
|
||||||
|
chain.offset = 4
|
||||||
|
list(chain) # last blog post, and first four articles
|
||||||
|
|
||||||
|
|
||||||
|
Chain slicing
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
chain = QueryChain(
|
||||||
|
[
|
||||||
|
session.query(BlogPost),
|
||||||
|
session.query(Article),
|
||||||
|
session.query(NewsItem)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
chain[3:6] # New QueryChain with offset=3 and limit=6
|
||||||
|
"""
|
||||||
from copy import copy
|
from copy import copy
|
||||||
|
|
||||||
|
|
||||||
@@ -5,70 +81,12 @@ class QueryChain(object):
|
|||||||
"""
|
"""
|
||||||
QueryChain can be used as a wrapper for sequence of queries.
|
QueryChain can be used as a wrapper for sequence of queries.
|
||||||
|
|
||||||
Features:
|
|
||||||
|
|
||||||
* Easy iteration for sequence of queries
|
|
||||||
* Limit and offset which are smartly applied to all queries
|
|
||||||
* Smart __getitem__ support
|
|
||||||
|
|
||||||
:param queries: A sequence of SQLAlchemy Query objects
|
:param queries: A sequence of SQLAlchemy Query objects
|
||||||
:param limit: Similar to normal query limit this parameter can be used for
|
:param limit: Similar to normal query limit this parameter can be used for
|
||||||
limiting the number of results for the whole query chain.
|
limiting the number of results for the whole query chain.
|
||||||
:param offset: Similar to normal query offset this parameter can be used
|
:param offset: Similar to normal query offset this parameter can be used
|
||||||
for offsetting the query chain as a whole.
|
for offsetting the query chain as a whole.
|
||||||
|
|
||||||
|
|
||||||
Simple iteration
|
|
||||||
^^^^^^^^^^^^^^^^
|
|
||||||
::
|
|
||||||
|
|
||||||
chain = QueryChain([session.query(User), session.query(Article)])
|
|
||||||
|
|
||||||
for obj in chain:
|
|
||||||
print obj
|
|
||||||
|
|
||||||
|
|
||||||
Limit and offset
|
|
||||||
^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Lets say you have 5 blog posts, 5 articles and 5 news items in your
|
|
||||||
database.
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
chain = QueryChain(
|
|
||||||
[
|
|
||||||
session.query(BlogPost),
|
|
||||||
session.query(Article),
|
|
||||||
session.query(NewsItem)
|
|
||||||
],
|
|
||||||
limit=5
|
|
||||||
)
|
|
||||||
|
|
||||||
list(chain) # all blog posts but not articles and news items
|
|
||||||
|
|
||||||
|
|
||||||
chain.offset = 4
|
|
||||||
list(chain) # last blog post, and first four articles
|
|
||||||
|
|
||||||
|
|
||||||
Chain slicing
|
|
||||||
^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
chain = QueryChain(
|
|
||||||
[
|
|
||||||
session.query(BlogPost),
|
|
||||||
session.query(Article),
|
|
||||||
session.query(NewsItem)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
chain[3:6] # New QueryChain with offset=3 and limit=6
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. versionadded: 0.26.0
|
.. versionadded: 0.26.0
|
||||||
"""
|
"""
|
||||||
def __init__(self, queries, limit=None, offset=None):
|
def __init__(self, queries, limit=None, offset=None):
|
||||||
|
Reference in New Issue
Block a user