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.
-
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.
-
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().- 参数
-
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.
-
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().