gino.loader module¶
- class gino.loader.AliasLoader(alias, *columns, **extras)¶
-
The same as
ModelLoader, kept for compatibility.
- class gino.loader.CallableLoader(func)¶
-
Load the row by calling a specified function.
- 参数
func -- A
callable()taking 2 positional arguments(row, context)that will be called indo_load(), returning the loaded result.
- class gino.loader.ColumnLoader(column)¶
-
Load a given column in the row.
- do_load(row, context)¶
Interface used by GINO to run the loader.
- 参数
row -- A
RowProxyinstance.context -- Not used.
- 返回
The value of the specified column, followed by
True.
- class gino.loader.Loader¶
基类:
objectThe abstract base class of loaders.
Loaders are used to load raw database rows into expected results.
GinoEnginewill use the loader set on theloadervalue of theexecution_options(), for example:from sqlalchemy import text, create_engine from gino.loader import ColumnLoader e = await create_engine("postgresql://localhost/gino", strategy="gino") q = text("SELECT now() as ts") loader = ColumnLoader("ts") ts = await e.first(q.execution_options(loader=loader)) # datetime
- do_load(row, context)¶
Interface used by GINO to run the loader.
Must be implemented in subclasses.
- 参数
row -- A
RowProxyinstance.context -- A
dictthat is reused across all loaders in one query.
- 返回
Any result that the loader is supposed to return, followed by a boolean value indicating if the result is distinct.
- classmethod get(value)¶
Automatically create a loader based on the type of the given value.
value type
loader type
as is
any other types
- 参数
value -- Any supported value above.
- 返回
A loader instance.
- get_columns()¶
Generate a list of selectables from this loader.
This is an experimental feature, this method is supposed to be called by
query.- 返回
A
listof SQLAlchemy selectables.
- get_from()¶
Generate a clause to be used in
select_from()from this loader.This is an experimental feature, this method is supposed to be called by
query.- 返回
A
FromClauseinstance, orNone.
- property query¶
Generate a query from this loader.
This is an experimental feature, not all loaders support this.
- 返回
A query instance with the
loaderexecution option set to self.
- class gino.loader.ModelLoader(model, *columns, **extras)¶
-
A loader that loads a row into a GINO model instance.
This loader generates an instance of the given
modeltype and fills the instance with attributes according to the other given parameters:Load each column attribute listed in the given
columnspositional arguments.If
columnsis not given, all defined columns of themodelwill be loaded.For each keyword argument, its value will be used to generate a loader using
Loader.get(), and the loaded value will besetattr()to the model instance under the name of the key.
For example, the simplest select and load:
sqlalchemy.select([User]).execution_options(loader=ModelLoader(User))
Select only the name column, and still load it into model instances:
sqlalchemy.select( [User.name] ).execution_options( loader=ModelLoader(User, User.name) )
This would also yield
Userinstances, with all column attributes asNonebutname.Nest a
ValueLoader:sqlalchemy.select( [User.name] ).execution_options( loader=ModelLoader(User, id=1) )
1is then converted into aValueLoaderand mocked theidattribute of all returnedUserinstances as1.Nest another
ModelLoader:sqlalchemy.select( [user.outerjoin(Company)] ).execution_options( loader=ModelLoader(User, company=Company) )
Likewise,
Companyis converted into aModelLoaderto load theCompanycolumns from the joined result, and theCompanyinstances are set to thecompanyattribute of eachUserinstance usingsetattr().- 参数
- property columns¶
- distinct(*columns)¶
Configure this loader to reuse instances that have the same values of all the give columns.
- 参数
columns -- Preferably
Columninstances.- 返回
selffor chaining.
- do_load(row, context)¶
Interface used by GINO to run the loader.
- 参数
row -- A
RowProxyinstance.context -- A
dictthat is reused across all loaders in one query.
- 返回
The model instance, followed by a boolean value indicating if the result is distinct.
- get_columns()¶
Generate a list of selectables from this loader.
This is an experimental feature, this method is supposed to be called by
query.- 返回
A
listof SQLAlchemy selectables.
- get_from()¶
Generate a clause to be used in
select_from()from this loader.This is an experimental feature, this method is supposed to be called by
query.- 返回
A
FromClauseinstance, orNone.
- load(*columns, **extras)¶
Update the loader with new rules.
After initialization, the rules of this loader can still be updated. This is useful when using the model class as a shortcut of
ModelLoaderwhere possible, chaining with aload()to initialize the rules, for example:sqlalchemy.select( [user.outerjoin(Company)] ).execution_options( loader=ModelLoader(User, company=Company.load('name')) )
- 参数
columns -- If provided, replace the columns to load with the given ones.
extras -- Update the loader with new extras.
- 返回
selffor chaining.
- none_as_none(enabled=True)¶
Deprecated method for compatibility, does nothing.
- on(on_clause)¶
Specify the
on_clausefor generating joined queries.This is an experimental feature, used by
get_from().- 参数
on_clause -- An expression to feed into
join().- 返回
selffor chaining.
- class gino.loader.TupleLoader(values)¶
-
Load multiple values into a tuple.
- 参数
values -- A
tuple, each item is converted into a loader withLoader.get().