SQLAlchemy 1.1 Documentation
ORM Internals¶
Key ORM constructs, not otherwise covered in other sections, are listed here.
-
class
sqlalchemy.orm.state.
AttributeState
(state, key)¶ Provide an inspection interface corresponding to a particular attribute on a particular mapped object.
The
AttributeState
object is accessed via theInstanceState.attrs
collection of a particularInstanceState
:from sqlalchemy import inspect insp = inspect(some_mapped_object) attr_state = insp.attrs.some_attribute
-
history
¶ Return the current pre-flush change history for this attribute, via the
History
interface.This method will not emit loader callables if the value of the attribute is unloaded.
더 보기
AttributeState.load_history()
- retrieve history using loader callables if the value is not locally present.attributes.get_history()
- underlying function
-
load_history
()¶ Return the current pre-flush change history for this attribute, via the
History
interface.This method will emit loader callables if the value of the attribute is unloaded.
버전 0.9.0에 추가.
-
loaded_value
¶ The current value of this attribute as loaded from the database.
If the value has not been loaded, or is otherwise not present in the object’s dictionary, returns NO_VALUE.
-
value
¶ Return the value of this attribute.
This operation is equivalent to accessing the object’s attribute directly or via
getattr()
, and will fire off any pending loader callables if needed.
-
-
class
sqlalchemy.orm.util.
CascadeOptions
¶ Bases:
__builtin__.frozenset
Keeps track of the options sent to relationship().cascade
-
class
sqlalchemy.orm.instrumentation.
ClassManager
(class_)¶ Bases:
__builtin__.dict
tracks state information at the class level.
-
__le__
¶ - inherited from the
__le__
attribute ofdict
x.__le__(y) <==> x<=y
-
__lt__
¶ - inherited from the
__lt__
attribute ofdict
x.__lt__(y) <==> x<y
-
__ne__
¶ - inherited from the
__ne__
attribute ofdict
x.__ne__(y) <==> x!=y
-
clear
() → None. Remove all items from D.¶ - inherited from the
clear()
method ofdict
-
copy
() → a shallow copy of D¶ - inherited from the
copy()
method ofdict
-
dispose
()¶ Dissasociate this manager from its class.
-
fromkeys
(S[, v]) → New dict with keys from S and values equal to v.¶ - inherited from the
fromkeys()
method ofdict
v defaults to None.
-
get
(k[, d]) → D[k] if k in D, else d. d defaults to None.¶ - inherited from the
get()
method ofdict
-
has_key
(k) → True if D has a key k, else False¶ - inherited from the
has_key()
method ofdict
-
has_parent
(state, key, optimistic=False)¶ TODO
-
items
() → list of D's (key, value) pairs, as 2-tuples¶ - inherited from the
items()
method ofdict
-
iteritems
() → an iterator over the (key, value) items of D¶ - inherited from the
iteritems()
method ofdict
-
iterkeys
() → an iterator over the keys of D¶ - inherited from the
iterkeys()
method ofdict
-
itervalues
() → an iterator over the values of D¶ - inherited from the
itervalues()
method ofdict
-
keys
() → list of D's keys¶ - inherited from the
keys()
method ofdict
-
manage
()¶ Mark this instance as the manager for its class.
-
original_init
¶ x.__init__(...) initializes x; see help(type(x)) for signature
-
pop
(k[, d]) → v, remove specified key and return the corresponding value.¶ - inherited from the
pop()
method ofdict
If key is not found, d is returned if given, otherwise KeyError is raised
-
popitem
() → (k, v), remove and return some (key, value) pair as a¶ - inherited from the
popitem()
method ofdict
2-tuple; but raise KeyError if D is empty.
-
setdefault
(k[, d]) → D.get(k,d), also set D[k]=d if k not in D¶ - inherited from the
setdefault()
method ofdict
-
state_getter
()¶ Return a (instance) -> InstanceState callable.
“state getter” callables should raise either KeyError or AttributeError if no InstanceState could be found for the instance.
-
unregister
()¶ remove all instrumentation established by this ClassManager.
-
update
([E, ]**F) → None. Update D from dict/iterable E and F.¶ - inherited from the
update()
method ofdict
If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
-
values
() → list of D's values¶ - inherited from the
values()
method ofdict
-
viewitems
() → a set-like object providing a view on D's items¶ - inherited from the
viewitems()
method ofdict
-
viewkeys
() → a set-like object providing a view on D's keys¶ - inherited from the
viewkeys()
method ofdict
-
viewvalues
() → an object providing a view on D's values¶ - inherited from the
viewvalues()
method ofdict
-
-
class
sqlalchemy.orm.properties.
ColumnProperty
(*columns, **kwargs)¶ Bases:
sqlalchemy.orm.interfaces.StrategizedProperty
Describes an object attribute that corresponds to a table column.
Public constructor is the
orm.column_property()
function.-
class
Comparator
(prop, parentmapper, adapt_to_entity=None)¶ Bases:
sqlalchemy.util.langhelpers.MemoizedSlots
,sqlalchemy.orm.interfaces.PropComparator
Produce boolean, comparison, and other operators for
ColumnProperty
attributes.See the documentation for
PropComparator
for a brief overview.See also:
Redefining and Creating New Operators
-
__eq__
(other)¶ - inherited from the
__eq__()
method ofColumnOperators
Implement the
==
operator.In a column context, produces the clause
a = b
. If the target isNone
, producesa IS NULL
.
-
__le__
(other)¶ - inherited from the
__le__()
method ofColumnOperators
Implement the
<=
operator.In a column context, produces the clause
a <= b
.
-
__lt__
(other)¶ - inherited from the
__lt__()
method ofColumnOperators
Implement the
<
operator.In a column context, produces the clause
a < b
.
-
__ne__
(other)¶ - inherited from the
__ne__()
method ofColumnOperators
Implement the
!=
operator.In a column context, produces the clause
a != b
. If the target isNone
, producesa IS NOT NULL
.
-
adapt_to_entity
(adapt_to_entity)¶ - inherited from the
adapt_to_entity()
method ofPropComparator
Return a copy of this PropComparator which will use the given
AliasedInsp
to produce corresponding expressions.
-
adapter
¶ - inherited from the
adapter
attribute ofPropComparator
Produce a callable that adapts column expressions to suit an aliased version of this comparator.
-
all_
()¶ - inherited from the
all_()
method ofColumnOperators
Produce a
all_()
clause against the parent object.버전 1.1에 추가.
-
any
(criterion=None, **kwargs)¶ - inherited from the
any()
method ofPropComparator
Return true if this collection contains any member that meets the given criterion.
The usual implementation of
any()
isRelationshipProperty.Comparator.any()
.매개 변수:
-
any_
()¶ - inherited from the
any_()
method ofColumnOperators
Produce a
any_()
clause against the parent object.버전 1.1에 추가.
-
asc
()¶ - inherited from the
asc()
method ofColumnOperators
Produce a
asc()
clause against the parent object.
-
between
(cleft, cright, symmetric=False)¶ - inherited from the
between()
method ofColumnOperators
Produce a
between()
clause against the parent object, given the lower and upper range.
-
collate
(collation)¶ - inherited from the
collate()
method ofColumnOperators
Produce a
collate()
clause against the parent object, given the collation string.
-
concat
(other)¶ - inherited from the
concat()
method ofColumnOperators
Implement the ‘concat’ operator.
In a column context, produces the clause
a || b
, or uses theconcat()
operator on MySQL.
-
contains
(other, **kwargs)¶ - inherited from the
contains()
method ofColumnOperators
Implement the ‘contains’ operator.
In a column context, produces the clause
LIKE '%<other>%'
-
desc
()¶ - inherited from the
desc()
method ofColumnOperators
Produce a
desc()
clause against the parent object.
-
distinct
()¶ - inherited from the
distinct()
method ofColumnOperators
Produce a
distinct()
clause against the parent object.
-
endswith
(other, **kwargs)¶ - inherited from the
endswith()
method ofColumnOperators
Implement the ‘endswith’ operator.
In a column context, produces the clause
LIKE '%<other>'
-
has
(criterion=None, **kwargs)¶ - inherited from the
has()
method ofPropComparator
Return true if this element references a member which meets the given criterion.
The usual implementation of
has()
isRelationshipProperty.Comparator.has()
.매개 변수:
-
ilike
(other, escape=None)¶ - inherited from the
ilike()
method ofColumnOperators
Implement the
ilike
operator.In a column context, produces the clause
a ILIKE other
.E.g.:
select([sometable]).where(sometable.c.column.ilike("%foobar%"))
매개 변수:
-
in_
(other)¶ - inherited from the
in_()
method ofColumnOperators
Implement the
in
operator.In a column context, produces the clause
a IN other
. “other” may be a tuple/list of column expressions, or aselect()
construct.
-
is_
(other)¶ - inherited from the
is_()
method ofColumnOperators
Implement the
IS
operator.Normally,
IS
is generated automatically when comparing to a value ofNone
, which resolves toNULL
. However, explicit usage ofIS
may be desirable if comparing to boolean values on certain platforms.버전 0.7.9에 추가.
-
isnot
(other)¶ - inherited from the
isnot()
method ofColumnOperators
Implement the
IS NOT
operator.Normally,
IS NOT
is generated automatically when comparing to a value ofNone
, which resolves toNULL
. However, explicit usage ofIS NOT
may be desirable if comparing to boolean values on certain platforms.버전 0.7.9에 추가.
-
like
(other, escape=None)¶ - inherited from the
like()
method ofColumnOperators
Implement the
like
operator.In a column context, produces the clause
a LIKE other
.E.g.:
select([sometable]).where(sometable.c.column.like("%foobar%"))
매개 변수:
-
match
(other, **kwargs)¶ - inherited from the
match()
method ofColumnOperators
Implements a database-specific ‘match’ operator.
match()
attempts to resolve to a MATCH-like function or operator provided by the backend. Examples include:- Postgresql - renders
x @@ to_tsquery(y)
- MySQL - renders
MATCH (x) AGAINST (y IN BOOLEAN MODE)
- Oracle - renders
CONTAINS(x, y)
- other backends may provide special implementations.
- Backends without any special implementation will emit the operator as “MATCH”. This is compatible with SQlite, for example.
- Postgresql - renders
-
notilike
(other, escape=None)¶ - inherited from the
notilike()
method ofColumnOperators
implement the
NOT ILIKE
operator.This is equivalent to using negation with
ColumnOperators.ilike()
, i.e.~x.ilike(y)
.버전 0.8에 추가.
-
notin_
(other)¶ - inherited from the
notin_()
method ofColumnOperators
implement the
NOT IN
operator.This is equivalent to using negation with
ColumnOperators.in_()
, i.e.~x.in_(y)
.버전 0.8에 추가.
-
notlike
(other, escape=None)¶ - inherited from the
notlike()
method ofColumnOperators
implement the
NOT LIKE
operator.This is equivalent to using negation with
ColumnOperators.like()
, i.e.~x.like(y)
.버전 0.8에 추가.
-
nullsfirst
()¶ - inherited from the
nullsfirst()
method ofColumnOperators
Produce a
nullsfirst()
clause against the parent object.
-
nullslast
()¶ - inherited from the
nullslast()
method ofColumnOperators
Produce a
nullslast()
clause against the parent object.
-
of_type
(class_)¶ - inherited from the
of_type()
method ofPropComparator
Redefine this object in terms of a polymorphic subclass.
Returns a new PropComparator from which further criterion can be evaluated.
e.g.:
query.join(Company.employees.of_type(Engineer)).\ filter(Engineer.name=='foo')
매개 변수: class_¶ – a class or mapper indicating that criterion will be against this specific subclass.
-
op
(opstring, precedence=0, is_comparison=False)¶ -
produce a generic operator function.
e.g.:
somecolumn.op("*")(5)
produces:
somecolumn * 5
This function can also be used to make bitwise operators explicit. For example:
somecolumn.op('&')(0xff)
is a bitwise AND of the value in
somecolumn
.매개 변수: - operator¶ – a string which will be output as the infix operator between this element and the expression passed to the generated function.
- precedence¶ –
precedence to apply to the operator, when parenthesizing expressions. A lower number will cause the expression to be parenthesized when applied against another operator with higher precedence. The default value of
0
is lower than all operators except for the comma (,
) andAS
operators. A value of 100 will be higher or equal to all operators, and -100 will be lower than or equal to all operators.버전 0.8에 추가: - added the ‘precedence’ argument.
- is_comparison¶ –
if True, the operator will be considered as a “comparison” operator, that is which evaluates to a boolean true/false value, like
==
,>
, etc. This flag should be set so that ORM relationships can establish that the operator is a comparison operator when used in a custom join condition.버전 0.9.2에 추가: - added the
Operators.op.is_comparison
flag.
-
startswith
(other, **kwargs)¶ - inherited from the
startswith()
method ofColumnOperators
Implement the
startwith
operator.In a column context, produces the clause
LIKE '<other>%'
-
-
ColumnProperty.
__init__
(*columns, **kwargs)¶ Construct a new
ColumnProperty
object.This constructor is mirrored as a public API function; see
column_property()
for a full usage and argument description.
-
ColumnProperty.
cascade_iterator
(type_, state, visited_instances=None, halt_on=None)¶ - inherited from the
cascade_iterator()
method ofMapperProperty
Iterate through instances related to the given instance for a particular ‘cascade’, starting with this MapperProperty.
Return an iterator3-tuples (instance, mapper, state).
Note that the ‘cascade’ collection on this MapperProperty is checked first for the given type before cascade_iterator is called.
This method typically only applies to RelationshipProperty.
-
ColumnProperty.
class_attribute
¶ - inherited from the
class_attribute
attribute ofMapperProperty
Return the class-bound descriptor corresponding to this
MapperProperty
.This is basically a
getattr()
call:return getattr(self.parent.class_, self.key)
I.e. if this
MapperProperty
were namedaddresses
, and the class to which it is mapped isUser
, this sequence is possible:>>> from sqlalchemy import inspect >>> mapper = inspect(User) >>> addresses_property = mapper.attrs.addresses >>> addresses_property.class_attribute is User.addresses True >>> User.addresses.property is addresses_property True
-
ColumnProperty.
expression
¶ Return the primary column or expression for this ColumnProperty.
-
ColumnProperty.
extension_type
= symbol('NOT_EXTENSION')¶
-
ColumnProperty.
init
()¶ - inherited from the
init()
method ofMapperProperty
Called after all mappers are created to assemble relationships between mappers and perform other post-mapper-creation initialization steps.
-
ColumnProperty.
set_parent
(parent, init)¶ - inherited from the
set_parent()
method ofMapperProperty
Set the parent mapper that references this MapperProperty.
This method is overridden by some subclasses to perform extra setup when the mapper is first known.
-
class
-
class
sqlalchemy.orm.properties.
ComparableProperty
(comparator_factory, descriptor=None, doc=None, info=None)¶ Bases:
sqlalchemy.orm.descriptor_props.DescriptorProperty
Instruments a Python property for use in query expressions.
-
__init__
(comparator_factory, descriptor=None, doc=None, info=None)¶ Construct a new
ComparableProperty
object.This constructor is mirrored as a public API function; see
comparable_property()
for a full usage and argument description.
-
-
class
sqlalchemy.orm.descriptor_props.
CompositeProperty
(class_, *attrs, **kwargs)¶ Bases:
sqlalchemy.orm.descriptor_props.DescriptorProperty
Defines a “composite” mapped attribute, representing a collection of columns as one attribute.
CompositeProperty
is constructed using thecomposite()
function.-
class
Comparator
(prop, parentmapper, adapt_to_entity=None)¶ Bases:
sqlalchemy.orm.interfaces.PropComparator
Produce boolean, comparison, and other operators for
CompositeProperty
attributes.See the example in Redefining Comparison Operations for Composites for an overview of usage , as well as the documentation for
PropComparator
.See also:
-
CompositeProperty.
__init__
(class_, *attrs, **kwargs)¶ Construct a new
CompositeProperty
object.This constructor is mirrored as a public API function; see
composite()
for a full usage and argument description.
-
CompositeProperty.
do_init
()¶ Initialization which occurs after the
CompositeProperty
has been associated with its parent mapper.
-
CompositeProperty.
get_history
(state, dict_, passive=symbol('PASSIVE_OFF'))¶ Provided for userland code that uses attributes.get_history().
-
class
-
class
sqlalchemy.orm.attributes.
Event
(attribute_impl, op)¶ A token propagated throughout the course of a chain of attribute events.
Serves as an indicator of the source of the event and also provides a means of controlling propagation across a chain of attribute operations.
The
Event
object is sent as theinitiator
argument when dealing with theAttributeEvents.append()
,AttributeEvents.set()
, andAttributeEvents.remove()
events.The
Event
object is currently interpreted by the backref event handlers, and is used to control the propagation of operations across two mutually-dependent attributes.버전 0.9.0에 추가.
변수:
-
class
sqlalchemy.orm.identity.
IdentityMap
¶ -
check_modified
()¶ return True if any InstanceStates present have been marked as ‘modified’.
-
-
class
sqlalchemy.orm.base.
InspectionAttr
¶ A base class applied to all ORM objects that can be returned by the
inspect()
function.The attributes defined here allow the usage of simple boolean checks to test basic facts about the object returned.
While the boolean checks here are basically the same as using the Python isinstance() function, the flags here can be used without the need to import all of these classes, and also such that the SQLAlchemy class system can change while leaving the flags here intact for forwards-compatibility.
-
extension_type
= symbol('NOT_EXTENSION')¶ The extension type, if any. Defaults to
interfaces.NOT_EXTENSION
버전 0.8.0에 추가.
-
is_aliased_class
= False¶ True if this object is an instance of
AliasedClass
.
-
is_attribute
= False¶ True if this object is a Python descriptor.
This can refer to one of many types. Usually a
QueryableAttribute
which handles attributes events on behalf of aMapperProperty
. But can also be an extension type such asAssociationProxy
orhybrid_property
. TheInspectionAttr.extension_type
will refer to a constant identifying the specific subtype.
-
is_clause_element
= False¶ True if this object is an instance of
ClauseElement
.
-
is_instance
= False¶ True if this object is an instance of
InstanceState
.
-
is_property
= False¶ True if this object is an instance of
MapperProperty
.
-
is_selectable
= False¶ Return True if this object is an instance of
Selectable
.
-
-
class
sqlalchemy.orm.base.
InspectionAttrInfo
¶ Bases:
sqlalchemy.orm.base.InspectionAttr
Adds the
.info
attribute toInspectionAttr
.The rationale for
InspectionAttr
vs.InspectionAttrInfo
is that the former is compatible as a mixin for classes that specify__slots__
; this is essentially an implementation artifact.-
info
¶ Info dictionary associated with the object, allowing user-defined data to be associated with this
InspectionAttr
.The dictionary is generated when first accessed. Alternatively, it can be specified as a constructor argument to the
column_property()
,relationship()
, orcomposite()
functions.버전 0.8에 추가: Added support for .info to all
MapperProperty
subclasses.버전 1.0.0으로 변경:
MapperProperty.info
is also available on extension types via theInspectionAttrInfo.info
attribute, so that it can apply to a wider variety of ORM and extension constructs.
-
-
class
sqlalchemy.orm.state.
InstanceState
(obj, manager)¶ Bases:
sqlalchemy.orm.base.InspectionAttr
tracks state information at the instance level.
The
InstanceState
is a key object used by the SQLAlchemy ORM in order to track the state of an object; it is created the moment an object is instantiated, typically as a result of instrumentation which SQLAlchemy applies to the__init__()
method of the class.InstanceState
is also a semi-public object, available for runtime inspection as to the state of a mapped instance, including information such as its current status within a particularSession
and details about data on individual attributes. The public API in order to acquire aInstanceState
object is to use theinspect()
system:>>> from sqlalchemy import inspect >>> insp = inspect(some_mapped_object)
-
attrs
¶ Return a namespace representing each attribute on the mapped object, including its current value and history.
The returned object is an instance of
AttributeState
. This object allows inspection of the current data within an attribute as well as attribute history since the last flush.
-
callables
= ()¶ A namespace where a per-state loader callable can be associated.
In SQLAlchemy 1.0, this is only used for lazy loaders / deferred loaders that were set up via query option.
Previously, callables was used also to indicate expired attributes by storing a link to the InstanceState itself in this dictionary. This role is now handled by the expired_attributes set.
-
deleted
¶ Return true if the object is deleted.
An object that is in the deleted state is guaranteed to not be within the
Session.identity_map
of its parentSession
; however if the session’s transaction is rolled back, the object will be restored to the persistent state and the identity map.주석
The
InstanceState.deleted
attribute refers to a specific state of the object that occurs between the “persistent” and “detached” states; once the object is detached, theInstanceState.deleted
attribute no longer returns True; in order to detect that a state was deleted, regardless of whether or not the object is associated with aSession
, use theInstanceState.was_deleted
accessor.
-
dict
¶ Return the instance dict used by the object.
Under normal circumstances, this is always synonymous with the
__dict__
attribute of the mapped object, unless an alternative instrumentation system has been configured.In the case that the actual object has been garbage collected, this accessor returns a blank dictionary.
-
expired_attributes
= None¶ The set of keys which are ‘expired’ to be loaded by the manager’s deferred scalar loader, assuming no pending changes.
see also the
unmodified
collection which is intersected against this set when a refresh operation occurs.
-
has_identity
¶ Return
True
if this object has an identity key.This should always have the same value as the expression
state.persistent or state.detached
.
-
identity
¶ Return the mapped identity of the mapped object. This is the primary key identity as persisted by the ORM which can always be passed directly to
Query.get()
.Returns
None
if the object has no primary key identity.
-
identity_key
¶ Return the identity key for the mapped object.
This is the key used to locate the object within the
Session.identity_map
mapping. It contains the identity as returned byidentity
within it.
-
object
¶ Return the mapped object represented by this
InstanceState
.
-
persistent
¶ Return true if the object is persistent.
An object that is in the persistent state is guaranteed to be within the
Session.identity_map
of its parentSession
.버전 1.1으로 변경: The
InstanceState.persistent
accessor no longer returns True for an object that was “deleted” within a flush; use theInstanceState.deleted
accessor to detect this state. This allows the “persistent” state to guarantee membership in the identity map.
-
session
¶ Return the owning
Session
for this instance, orNone
if none available.Note that the result here can in some cases be different from that of
obj in session
; an object that’s been deleted will report as notin session
, however if the transaction is still in progress, this attribute will still refer to that session. Only when the transaction is completed does the object become fully detached under normal circumstances.
-
unloaded
¶ Return the set of keys which do not have a loaded value.
This includes expired attributes and any other attribute that was never populated or modified.
-
unmodified
¶ Return the set of keys which have no uncommitted changes
-
unmodified_intersection
(keys)¶ Return self.unmodified.intersection(keys).
-
was_deleted
¶ Return True if this object is or was previously in the “deleted” state and has not been reverted to persistent.
This flag returns True once the object was deleted in flush. When the object is expunged from the session either explicitly or via transaction commit and enters the “detached” state, this flag will continue to report True.
버전 1.1에 추가: - added a local method form of
orm.util.was_deleted()
.더 보기
InstanceState.deleted
- refers to the “deleted” stateorm.util.was_deleted()
- standalone function
-
-
class
sqlalchemy.orm.attributes.
InstrumentedAttribute
(class_, key, impl=None, comparator=None, parententity=None, of_type=None)¶ Bases:
sqlalchemy.orm.attributes.QueryableAttribute
Class bound instrumented attribute which adds basic descriptor methods.
See
QueryableAttribute
for a description of most features.-
__delete__
(instance)¶
-
__get__
(instance, owner)¶
-
__set__
(instance, value)¶
-
-
sqlalchemy.orm.interfaces.
MANYTOONE
= symbol('MANYTOONE')¶ Indicates the many-to-one direction for a
relationship()
.This symbol is typically used by the internals but may be exposed within certain API features.
-
sqlalchemy.orm.interfaces.
MANYTOMANY
= symbol('MANYTOMANY')¶ Indicates the many-to-many direction for a
relationship()
.This symbol is typically used by the internals but may be exposed within certain API features.
-
class
sqlalchemy.orm.interfaces.
MapperProperty
¶ Bases:
sqlalchemy.orm.base._MappedAttribute
,sqlalchemy.orm.base.InspectionAttr
,sqlalchemy.util.langhelpers.MemoizedSlots
Represent a particular class attribute mapped by
Mapper
.The most common occurrences of
MapperProperty
are the mappedColumn
, which is represented in a mapping as an instance ofColumnProperty
, and a reference to another class produced byrelationship()
, represented in the mapping as an instance ofRelationshipProperty
.-
info
¶ Info dictionary associated with the object, allowing user-defined data to be associated with this
InspectionAttr
.The dictionary is generated when first accessed. Alternatively, it can be specified as a constructor argument to the
column_property()
,relationship()
, orcomposite()
functions.버전 0.8에 추가: Added support for .info to all
MapperProperty
subclasses.버전 1.0.0으로 변경:
InspectionAttr.info
moved fromMapperProperty
so that it can apply to a wider variety of ORM and extension constructs.
-
cascade
= frozenset([])¶ The set of ‘cascade’ attribute names.
This collection is checked before the ‘cascade_iterator’ method is called.
The collection typically only applies to a RelationshipProperty.
-
cascade_iterator
(type_, state, visited_instances=None, halt_on=None)¶ Iterate through instances related to the given instance for a particular ‘cascade’, starting with this MapperProperty.
Return an iterator3-tuples (instance, mapper, state).
Note that the ‘cascade’ collection on this MapperProperty is checked first for the given type before cascade_iterator is called.
This method typically only applies to RelationshipProperty.
-
class_attribute
¶ Return the class-bound descriptor corresponding to this
MapperProperty
.This is basically a
getattr()
call:return getattr(self.parent.class_, self.key)
I.e. if this
MapperProperty
were namedaddresses
, and the class to which it is mapped isUser
, this sequence is possible:>>> from sqlalchemy import inspect >>> mapper = inspect(User) >>> addresses_property = mapper.attrs.addresses >>> addresses_property.class_attribute is User.addresses True >>> User.addresses.property is addresses_property True
-
create_row_processor
(context, path, mapper, result, adapter, populators)¶ Produce row processing functions and append to the given set of populators lists.
-
do_init
()¶ Perform subclass-specific initialization post-mapper-creation steps.
This is a template method called by the
MapperProperty
object’s init() method.
-
init
()¶ Called after all mappers are created to assemble relationships between mappers and perform other post-mapper-creation initialization steps.
-
instrument_class
(mapper)¶ Hook called by the Mapper to the property to initiate instrumentation of the class attribute managed by this MapperProperty.
The MapperProperty here will typically call out to the attributes module to set up an InstrumentedAttribute.
This step is the first of two steps to set up an InstrumentedAttribute, and is called early in the mapper setup process.
The second step is typically the init_class_attribute step, called from StrategizedProperty via the post_instrument_class() hook. This step assigns additional state to the InstrumentedAttribute (specifically the “impl”) which has been determined after the MapperProperty has determined what kind of persistence management it needs to do (e.g. scalar, object, collection, etc).
-
is_property
= True¶ Part of the InspectionAttr interface; states this object is a mapper property.
-
merge
(session, source_state, source_dict, dest_state, dest_dict, load, _recursive, _resolve_conflict_map)¶ Merge the attribute represented by this
MapperProperty
from source to destination object.
-
post_instrument_class
(mapper)¶ Perform instrumentation adjustments that need to occur after init() has completed.
The given Mapper is the Mapper invoking the operation, which may not be the same Mapper as self.parent in an inheritance scenario; however, Mapper will always at least be a sub-mapper of self.parent.
This method is typically used by StrategizedProperty, which delegates it to LoaderStrategy.init_class_attribute() to perform final setup on the class-bound InstrumentedAttribute.
-
set_parent
(parent, init)¶ Set the parent mapper that references this MapperProperty.
This method is overridden by some subclasses to perform extra setup when the mapper is first known.
-
setup
(context, entity, path, adapter, **kwargs)¶ Called by Query for the purposes of constructing a SQL statement.
Each MapperProperty associated with the target mapper processes the statement referenced by the query context, adding columns and/or criterion as appropriate.
-
-
sqlalchemy.orm.interfaces.
NOT_EXTENSION
= symbol('NOT_EXTENSION')¶ Symbol indicating an
InspectionAttr
that’s not part of sqlalchemy.ext.Is assigned to the
InspectionAttr.extension_type
attibute.
-
sqlalchemy.orm.interfaces.
ONETOMANY
= symbol('ONETOMANY')¶ Indicates the one-to-many direction for a
relationship()
.This symbol is typically used by the internals but may be exposed within certain API features.
-
class
sqlalchemy.orm.interfaces.
PropComparator
(prop, parentmapper, adapt_to_entity=None)¶ Bases:
sqlalchemy.sql.operators.ColumnOperators
Defines SQL operators for
MapperProperty
objects.SQLAlchemy allows for operators to be redefined at both the Core and ORM level.
PropComparator
is the base class of operator redefinition for ORM-level operations, including those ofColumnProperty
,RelationshipProperty
, andCompositeProperty
.주석
With the advent of Hybrid properties introduced in SQLAlchemy 0.7, as well as Core-level operator redefinition in SQLAlchemy 0.8, the use case for user-defined
PropComparator
instances is extremely rare. See Hybrid Attributes as well as Redefining and Creating New Operators.User-defined subclasses of
PropComparator
may be created. The built-in Python comparison and math operator methods, such asoperators.ColumnOperators.__eq__()
,operators.ColumnOperators.__lt__()
, andoperators.ColumnOperators.__add__()
, can be overridden to provide new operator behavior. The customPropComparator
is passed to theMapperProperty
instance via thecomparator_factory
argument. In each case, the appropriate subclass ofPropComparator
should be used:# definition of custom PropComparator subclasses from sqlalchemy.orm.properties import \ ColumnProperty,\ CompositeProperty,\ RelationshipProperty class MyColumnComparator(ColumnProperty.Comparator): def __eq__(self, other): return self.__clause_element__() == other class MyRelationshipComparator(RelationshipProperty.Comparator): def any(self, expression): "define the 'any' operation" # ... class MyCompositeComparator(CompositeProperty.Comparator): def __gt__(self, other): "redefine the 'greater than' operation" return sql.and_(*[a>b for a, b in zip(self.__clause_element__().clauses, other.__composite_values__())]) # application of custom PropComparator subclasses from sqlalchemy.orm import column_property, relationship, composite from sqlalchemy import Column, String class SomeMappedClass(Base): some_column = column_property(Column("some_column", String), comparator_factory=MyColumnComparator) some_relationship = relationship(SomeOtherClass, comparator_factory=MyRelationshipComparator) some_composite = composite( Column("a", String), Column("b", String), comparator_factory=MyCompositeComparator )
Note that for column-level operator redefinition, it’s usually simpler to define the operators at the Core level, using the
TypeEngine.comparator_factory
attribute. See Redefining and Creating New Operators for more detail.See also:
RelationshipProperty.Comparator
Redefining and Creating New Operators
-
__eq__
(other)¶ - inherited from the
__eq__()
method ofColumnOperators
Implement the
==
operator.In a column context, produces the clause
a = b
. If the target isNone
, producesa IS NULL
.
-
__le__
(other)¶ - inherited from the
__le__()
method ofColumnOperators
Implement the
<=
operator.In a column context, produces the clause
a <= b
.
-
__lt__
(other)¶ - inherited from the
__lt__()
method ofColumnOperators
Implement the
<
operator.In a column context, produces the clause
a < b
.
-
__ne__
(other)¶ - inherited from the
__ne__()
method ofColumnOperators
Implement the
!=
operator.In a column context, produces the clause
a != b
. If the target isNone
, producesa IS NOT NULL
.
-
adapt_to_entity
(adapt_to_entity)¶ Return a copy of this PropComparator which will use the given
AliasedInsp
to produce corresponding expressions.
-
adapter
¶ Produce a callable that adapts column expressions to suit an aliased version of this comparator.
-
all_
()¶ - inherited from the
all_()
method ofColumnOperators
Produce a
all_()
clause against the parent object.버전 1.1에 추가.
-
any
(criterion=None, **kwargs)¶ Return true if this collection contains any member that meets the given criterion.
The usual implementation of
any()
isRelationshipProperty.Comparator.any()
.매개 변수:
-
any_
()¶ - inherited from the
any_()
method ofColumnOperators
Produce a
any_()
clause against the parent object.버전 1.1에 추가.
-
asc
()¶ - inherited from the
asc()
method ofColumnOperators
Produce a
asc()
clause against the parent object.
-
between
(cleft, cright, symmetric=False)¶ - inherited from the
between()
method ofColumnOperators
Produce a
between()
clause against the parent object, given the lower and upper range.
-
collate
(collation)¶ - inherited from the
collate()
method ofColumnOperators
Produce a
collate()
clause against the parent object, given the collation string.
-
concat
(other)¶ - inherited from the
concat()
method ofColumnOperators
Implement the ‘concat’ operator.
In a column context, produces the clause
a || b
, or uses theconcat()
operator on MySQL.
-
contains
(other, **kwargs)¶ - inherited from the
contains()
method ofColumnOperators
Implement the ‘contains’ operator.
In a column context, produces the clause
LIKE '%<other>%'
-
desc
()¶ - inherited from the
desc()
method ofColumnOperators
Produce a
desc()
clause against the parent object.
-
distinct
()¶ - inherited from the
distinct()
method ofColumnOperators
Produce a
distinct()
clause against the parent object.
-
endswith
(other, **kwargs)¶ - inherited from the
endswith()
method ofColumnOperators
Implement the ‘endswith’ operator.
In a column context, produces the clause
LIKE '%<other>'
-
has
(criterion=None, **kwargs)¶ Return true if this element references a member which meets the given criterion.
The usual implementation of
has()
isRelationshipProperty.Comparator.has()
.매개 변수:
-
ilike
(other, escape=None)¶ - inherited from the
ilike()
method ofColumnOperators
Implement the
ilike
operator.In a column context, produces the clause
a ILIKE other
.E.g.:
select([sometable]).where(sometable.c.column.ilike("%foobar%"))
매개 변수:
-
in_
(other)¶ - inherited from the
in_()
method ofColumnOperators
Implement the
in
operator.In a column context, produces the clause
a IN other
. “other” may be a tuple/list of column expressions, or aselect()
construct.
-
is_
(other)¶ - inherited from the
is_()
method ofColumnOperators
Implement the
IS
operator.Normally,
IS
is generated automatically when comparing to a value ofNone
, which resolves toNULL
. However, explicit usage ofIS
may be desirable if comparing to boolean values on certain platforms.버전 0.7.9에 추가.
-
isnot
(other)¶ - inherited from the
isnot()
method ofColumnOperators
Implement the
IS NOT
operator.Normally,
IS NOT
is generated automatically when comparing to a value ofNone
, which resolves toNULL
. However, explicit usage ofIS NOT
may be desirable if comparing to boolean values on certain platforms.버전 0.7.9에 추가.
-
like
(other, escape=None)¶ - inherited from the
like()
method ofColumnOperators
Implement the
like
operator.In a column context, produces the clause
a LIKE other
.E.g.:
select([sometable]).where(sometable.c.column.like("%foobar%"))
매개 변수:
-
match
(other, **kwargs)¶ - inherited from the
match()
method ofColumnOperators
Implements a database-specific ‘match’ operator.
match()
attempts to resolve to a MATCH-like function or operator provided by the backend. Examples include:- Postgresql - renders
x @@ to_tsquery(y)
- MySQL - renders
MATCH (x) AGAINST (y IN BOOLEAN MODE)
- Oracle - renders
CONTAINS(x, y)
- other backends may provide special implementations.
- Backends without any special implementation will emit the operator as “MATCH”. This is compatible with SQlite, for example.
- Postgresql - renders
-
notilike
(other, escape=None)¶ - inherited from the
notilike()
method ofColumnOperators
implement the
NOT ILIKE
operator.This is equivalent to using negation with
ColumnOperators.ilike()
, i.e.~x.ilike(y)
.버전 0.8에 추가.
-
notin_
(other)¶ - inherited from the
notin_()
method ofColumnOperators
implement the
NOT IN
operator.This is equivalent to using negation with
ColumnOperators.in_()
, i.e.~x.in_(y)
.버전 0.8에 추가.
-
notlike
(other, escape=None)¶ - inherited from the
notlike()
method ofColumnOperators
implement the
NOT LIKE
operator.This is equivalent to using negation with
ColumnOperators.like()
, i.e.~x.like(y)
.버전 0.8에 추가.
-
nullsfirst
()¶ - inherited from the
nullsfirst()
method ofColumnOperators
Produce a
nullsfirst()
clause against the parent object.
-
nullslast
()¶ - inherited from the
nullslast()
method ofColumnOperators
Produce a
nullslast()
clause against the parent object.
-
of_type
(class_)¶ Redefine this object in terms of a polymorphic subclass.
Returns a new PropComparator from which further criterion can be evaluated.
e.g.:
query.join(Company.employees.of_type(Engineer)).\ filter(Engineer.name=='foo')
매개 변수: class_¶ – a class or mapper indicating that criterion will be against this specific subclass.
-
op
(opstring, precedence=0, is_comparison=False)¶ -
produce a generic operator function.
e.g.:
somecolumn.op("*")(5)
produces:
somecolumn * 5
This function can also be used to make bitwise operators explicit. For example:
somecolumn.op('&')(0xff)
is a bitwise AND of the value in
somecolumn
.매개 변수: - operator¶ – a string which will be output as the infix operator between this element and the expression passed to the generated function.
- precedence¶ –
precedence to apply to the operator, when parenthesizing expressions. A lower number will cause the expression to be parenthesized when applied against another operator with higher precedence. The default value of
0
is lower than all operators except for the comma (,
) andAS
operators. A value of 100 will be higher or equal to all operators, and -100 will be lower than or equal to all operators.버전 0.8에 추가: - added the ‘precedence’ argument.
- is_comparison¶ –
if True, the operator will be considered as a “comparison” operator, that is which evaluates to a boolean true/false value, like
==
,>
, etc. This flag should be set so that ORM relationships can establish that the operator is a comparison operator when used in a custom join condition.버전 0.9.2에 추가: - added the
Operators.op.is_comparison
flag.
-
operate
(op, *other, **kwargs)¶ -
Operate on an argument.
This is the lowest level of operation, raises
NotImplementedError
by default.Overriding this on a subclass can allow common behavior to be applied to all operations. For example, overriding
ColumnOperators
to applyfunc.lower()
to the left and right side:class MyComparator(ColumnOperators): def operate(self, op, other): return op(func.lower(self), func.lower(other))
매개 변수:
-
reverse_operate
(op, other, **kwargs)¶ - inherited from the
reverse_operate()
method ofOperators
Reverse operate on an argument.
Usage is the same as
operate()
.
-
startswith
(other, **kwargs)¶ - inherited from the
startswith()
method ofColumnOperators
Implement the
startwith
operator.In a column context, produces the clause
LIKE '<other>%'
-
-
class
sqlalchemy.orm.properties.
RelationshipProperty
(argument, secondary=None, primaryjoin=None, secondaryjoin=None, foreign_keys=None, uselist=None, order_by=False, backref=None, back_populates=None, post_update=False, cascade=False, extension=None, viewonly=False, lazy=True, collection_class=None, passive_deletes=False, passive_updates=True, remote_side=None, enable_typechecks=True, join_depth=None, comparator_factory=None, single_parent=False, innerjoin=False, distinct_target_key=None, doc=None, active_history=False, cascade_backrefs=True, load_on_pending=False, bake_queries=True, strategy_class=None, _local_remote_pairs=None, query_class=None, info=None)¶ Bases:
sqlalchemy.orm.interfaces.StrategizedProperty
Describes an object property that holds a single item or list of items that correspond to a related database table.
Public constructor is the
orm.relationship()
function.See also:
-
class
Comparator
(prop, parentmapper, adapt_to_entity=None, of_type=None)¶ Bases:
sqlalchemy.orm.interfaces.PropComparator
Produce boolean, comparison, and other operators for
RelationshipProperty
attributes.See the documentation for
PropComparator
for a brief overview of ORM level operator definition.See also:
Redefining and Creating New Operators
-
__eq__
(other)¶ Implement the
==
operator.In a many-to-one context, such as:
MyClass.some_prop == <some object>
this will typically produce a clause such as:
mytable.related_id == <some id>
Where
<some id>
is the primary key of the given object.The
==
operator provides partial functionality for non- many-to-one comparisons:- Comparisons against collections are not supported.
Use
contains()
. - Compared to a scalar one-to-many, will produce a clause that compares the target columns in the parent to the given target.
- Compared to a scalar many-to-many, an alias
of the association table will be rendered as
well, forming a natural join that is part of the
main body of the query. This will not work for
queries that go beyond simple AND conjunctions of
comparisons, such as those which use OR. Use
explicit joins, outerjoins, or
has()
for more comprehensive non-many-to-one scalar membership tests. - Comparisons against
None
given in a one-to-many or many-to-many context produce a NOT EXISTS clause.
- Comparisons against collections are not supported.
Use
-
__init__
(prop, parentmapper, adapt_to_entity=None, of_type=None)¶ Construction of
RelationshipProperty.Comparator
is internal to the ORM’s attribute mechanics.
-
__le__
(other)¶ - inherited from the
__le__()
method ofColumnOperators
Implement the
<=
operator.In a column context, produces the clause
a <= b
.
-
__lt__
(other)¶ - inherited from the
__lt__()
method ofColumnOperators
Implement the
<
operator.In a column context, produces the clause
a < b
.
-
__ne__
(other)¶ Implement the
!=
operator.In a many-to-one context, such as:
MyClass.some_prop != <some object>
This will typically produce a clause such as:
mytable.related_id != <some id>
Where
<some id>
is the primary key of the given object.The
!=
operator provides partial functionality for non- many-to-one comparisons:- Comparisons against collections are not supported.
Use
contains()
in conjunction withnot_()
. - Compared to a scalar one-to-many, will produce a clause that compares the target columns in the parent to the given target.
- Compared to a scalar many-to-many, an alias
of the association table will be rendered as
well, forming a natural join that is part of the
main body of the query. This will not work for
queries that go beyond simple AND conjunctions of
comparisons, such as those which use OR. Use
explicit joins, outerjoins, or
has()
in conjunction withnot_()
for more comprehensive non-many-to-one scalar membership tests. - Comparisons against
None
given in a one-to-many or many-to-many context produce an EXISTS clause.
- Comparisons against collections are not supported.
Use
-
adapter
¶ - inherited from the
adapter
attribute ofPropComparator
Produce a callable that adapts column expressions to suit an aliased version of this comparator.
-
all_
()¶ - inherited from the
all_()
method ofColumnOperators
Produce a
all_()
clause against the parent object.버전 1.1에 추가.
-
any
(criterion=None, **kwargs)¶ Produce an expression that tests a collection against particular criterion, using EXISTS.
An expression like:
session.query(MyClass).filter( MyClass.somereference.any(SomeRelated.x==2) )
Will produce a query like:
SELECT * FROM my_table WHERE EXISTS (SELECT 1 FROM related WHERE related.my_id=my_table.id AND related.x=2)
Because
any()
uses a correlated subquery, its performance is not nearly as good when compared against large target tables as that of using a join.any()
is particularly useful for testing for empty collections:session.query(MyClass).filter( ~MyClass.somereference.any() )
will produce:
SELECT * FROM my_table WHERE NOT EXISTS (SELECT 1 FROM related WHERE related.my_id=my_table.id)
any()
is only valid for collections, i.e. arelationship()
that hasuselist=True
. For scalar references, usehas()
.
-
any_
()¶ - inherited from the
any_()
method ofColumnOperators
Produce a
any_()
clause against the parent object.버전 1.1에 추가.
-
asc
()¶ - inherited from the
asc()
method ofColumnOperators
Produce a
asc()
clause against the parent object.
-
between
(cleft, cright, symmetric=False)¶ - inherited from the
between()
method ofColumnOperators
Produce a
between()
clause against the parent object, given the lower and upper range.
-
collate
(collation)¶ - inherited from the
collate()
method ofColumnOperators
Produce a
collate()
clause against the parent object, given the collation string.
-
concat
(other)¶ - inherited from the
concat()
method ofColumnOperators
Implement the ‘concat’ operator.
In a column context, produces the clause
a || b
, or uses theconcat()
operator on MySQL.
-
contains
(other, **kwargs)¶ Return a simple expression that tests a collection for containment of a particular item.
contains()
is only valid for a collection, i.e. arelationship()
that implements one-to-many or many-to-many withuselist=True
.When used in a simple one-to-many context, an expression like:
MyClass.contains(other)
Produces a clause like:
mytable.id == <some id>
Where
<some id>
is the value of the foreign key attribute onother
which refers to the primary key of its parent object. From this it follows thatcontains()
is very useful when used with simple one-to-many operations.For many-to-many operations, the behavior of
contains()
has more caveats. The association table will be rendered in the statement, producing an “implicit” join, that is, includes multiple tables in the FROM clause which are equated in the WHERE clause:query(MyClass).filter(MyClass.contains(other))
Produces a query like:
SELECT * FROM my_table, my_association_table AS my_association_table_1 WHERE my_table.id = my_association_table_1.parent_id AND my_association_table_1.child_id = <some id>
Where
<some id>
would be the primary key ofother
. From the above, it is clear thatcontains()
will not work with many-to-many collections when used in queries that move beyond simple AND conjunctions, such as multiplecontains()
expressions joined by OR. In such cases subqueries or explicit “outer joins” will need to be used instead. Seeany()
for a less-performant alternative using EXISTS, or refer toQuery.outerjoin()
as well as Querying with Joins for more details on constructing outer joins.
-
desc
()¶ - inherited from the
desc()
method ofColumnOperators
Produce a
desc()
clause against the parent object.
-
distinct
()¶ - inherited from the
distinct()
method ofColumnOperators
Produce a
distinct()
clause against the parent object.
-
endswith
(other, **kwargs)¶ - inherited from the
endswith()
method ofColumnOperators
Implement the ‘endswith’ operator.
In a column context, produces the clause
LIKE '%<other>'
-
has
(criterion=None, **kwargs)¶ Produce an expression that tests a scalar reference against particular criterion, using EXISTS.
An expression like:
session.query(MyClass).filter( MyClass.somereference.has(SomeRelated.x==2) )
Will produce a query like:
SELECT * FROM my_table WHERE EXISTS (SELECT 1 FROM related WHERE related.id==my_table.related_id AND related.x=2)
Because
has()
uses a correlated subquery, its performance is not nearly as good when compared against large target tables as that of using a join.has()
is only valid for scalar references, i.e. arelationship()
that hasuselist=False
. For collection references, useany()
.
-
ilike
(other, escape=None)¶ - inherited from the
ilike()
method ofColumnOperators
Implement the
ilike
operator.In a column context, produces the clause
a ILIKE other
.E.g.:
select([sometable]).where(sometable.c.column.ilike("%foobar%"))
매개 변수:
-
in_
(other)¶ Produce an IN clause - this is not implemented for
relationship()
-based attributes at this time.
-
is_
(other)¶ - inherited from the
is_()
method ofColumnOperators
Implement the
IS
operator.Normally,
IS
is generated automatically when comparing to a value ofNone
, which resolves toNULL
. However, explicit usage ofIS
may be desirable if comparing to boolean values on certain platforms.버전 0.7.9에 추가.
-
isnot
(other)¶ - inherited from the
isnot()
method ofColumnOperators
Implement the
IS NOT
operator.Normally,
IS NOT
is generated automatically when comparing to a value ofNone
, which resolves toNULL
. However, explicit usage ofIS NOT
may be desirable if comparing to boolean values on certain platforms.버전 0.7.9에 추가.
-
like
(other, escape=None)¶ - inherited from the
like()
method ofColumnOperators
Implement the
like
operator.In a column context, produces the clause
a LIKE other
.E.g.:
select([sometable]).where(sometable.c.column.like("%foobar%"))
매개 변수:
-
mapper
¶ The target
Mapper
referred to by thisRelationshipProperty.Comparator
.This is the “target” or “remote” side of the
relationship()
.
-
match
(other, **kwargs)¶ - inherited from the
match()
method ofColumnOperators
Implements a database-specific ‘match’ operator.
match()
attempts to resolve to a MATCH-like function or operator provided by the backend. Examples include:- Postgresql - renders
x @@ to_tsquery(y)
- MySQL - renders
MATCH (x) AGAINST (y IN BOOLEAN MODE)
- Oracle - renders
CONTAINS(x, y)
- other backends may provide special implementations.
- Backends without any special implementation will emit the operator as “MATCH”. This is compatible with SQlite, for example.
- Postgresql - renders
-
notilike
(other, escape=None)¶ - inherited from the
notilike()
method ofColumnOperators
implement the
NOT ILIKE
operator.This is equivalent to using negation with
ColumnOperators.ilike()
, i.e.~x.ilike(y)
.버전 0.8에 추가.
-
notin_
(other)¶ - inherited from the
notin_()
method ofColumnOperators
implement the
NOT IN
operator.This is equivalent to using negation with
ColumnOperators.in_()
, i.e.~x.in_(y)
.버전 0.8에 추가.
-
notlike
(other, escape=None)¶ - inherited from the
notlike()
method ofColumnOperators
implement the
NOT LIKE
operator.This is equivalent to using negation with
ColumnOperators.like()
, i.e.~x.like(y)
.버전 0.8에 추가.
-
nullsfirst
()¶ - inherited from the
nullsfirst()
method ofColumnOperators
Produce a
nullsfirst()
clause against the parent object.
-
nullslast
()¶ - inherited from the
nullslast()
method ofColumnOperators
Produce a
nullslast()
clause against the parent object.
-
of_type
(cls)¶ Produce a construct that represents a particular ‘subtype’ of attribute for the parent class.
Currently this is usable in conjunction with
Query.join()
andQuery.outerjoin()
.
-
op
(opstring, precedence=0, is_comparison=False)¶ -
produce a generic operator function.
e.g.:
somecolumn.op("*")(5)
produces:
somecolumn * 5
This function can also be used to make bitwise operators explicit. For example:
somecolumn.op('&')(0xff)
is a bitwise AND of the value in
somecolumn
.매개 변수: - operator¶ – a string which will be output as the infix operator between this element and the expression passed to the generated function.
- precedence¶ –
precedence to apply to the operator, when parenthesizing expressions. A lower number will cause the expression to be parenthesized when applied against another operator with higher precedence. The default value of
0
is lower than all operators except for the comma (,
) andAS
operators. A value of 100 will be higher or equal to all operators, and -100 will be lower than or equal to all operators.버전 0.8에 추가: - added the ‘precedence’ argument.
- is_comparison¶ –
if True, the operator will be considered as a “comparison” operator, that is which evaluates to a boolean true/false value, like
==
,>
, etc. This flag should be set so that ORM relationships can establish that the operator is a comparison operator when used in a custom join condition.버전 0.9.2에 추가: - added the
Operators.op.is_comparison
flag.
-
operate
(op, *other, **kwargs)¶ -
Operate on an argument.
This is the lowest level of operation, raises
NotImplementedError
by default.Overriding this on a subclass can allow common behavior to be applied to all operations. For example, overriding
ColumnOperators
to applyfunc.lower()
to the left and right side:class MyComparator(ColumnOperators): def operate(self, op, other): return op(func.lower(self), func.lower(other))
매개 변수:
-
reverse_operate
(op, other, **kwargs)¶ - inherited from the
reverse_operate()
method ofOperators
Reverse operate on an argument.
Usage is the same as
operate()
.
-
startswith
(other, **kwargs)¶ - inherited from the
startswith()
method ofColumnOperators
Implement the
startwith
operator.In a column context, produces the clause
LIKE '<other>%'
-
-
RelationshipProperty.
__init__
(argument, secondary=None, primaryjoin=None, secondaryjoin=None, foreign_keys=None, uselist=None, order_by=False, backref=None, back_populates=None, post_update=False, cascade=False, extension=None, viewonly=False, lazy=True, collection_class=None, passive_deletes=False, passive_updates=True, remote_side=None, enable_typechecks=True, join_depth=None, comparator_factory=None, single_parent=False, innerjoin=False, distinct_target_key=None, doc=None, active_history=False, cascade_backrefs=True, load_on_pending=False, bake_queries=True, strategy_class=None, _local_remote_pairs=None, query_class=None, info=None)¶ Construct a new
RelationshipProperty
object.This constructor is mirrored as a public API function; see
relationship()
for a full usage and argument description.
-
RelationshipProperty.
cascade
¶ Return the current cascade setting for this
RelationshipProperty
.
-
RelationshipProperty.
class_attribute
¶ - inherited from the
class_attribute
attribute ofMapperProperty
Return the class-bound descriptor corresponding to this
MapperProperty
.This is basically a
getattr()
call:return getattr(self.parent.class_, self.key)
I.e. if this
MapperProperty
were namedaddresses
, and the class to which it is mapped isUser
, this sequence is possible:>>> from sqlalchemy import inspect >>> mapper = inspect(User) >>> addresses_property = mapper.attrs.addresses >>> addresses_property.class_attribute is User.addresses True >>> User.addresses.property is addresses_property True
-
RelationshipProperty.
extension_type
= symbol('NOT_EXTENSION')¶
-
RelationshipProperty.
init
()¶ - inherited from the
init()
method ofMapperProperty
Called after all mappers are created to assemble relationships between mappers and perform other post-mapper-creation initialization steps.
-
RelationshipProperty.
mapper
¶ Return the targeted
Mapper
for thisRelationshipProperty
.This is a lazy-initializing static attribute.
-
RelationshipProperty.
set_parent
(parent, init)¶ - inherited from the
set_parent()
method ofMapperProperty
Set the parent mapper that references this MapperProperty.
This method is overridden by some subclasses to perform extra setup when the mapper is first known.
-
RelationshipProperty.
table
¶ Return the selectable linked to this
RelationshipProperty
object’s targetMapper
.버전 0.7 폐지: Use .target
-
class
-
class
sqlalchemy.orm.descriptor_props.
SynonymProperty
(name, map_column=None, descriptor=None, comparator_factory=None, doc=None, info=None)¶ Bases:
sqlalchemy.orm.descriptor_props.DescriptorProperty
-
__init__
(name, map_column=None, descriptor=None, comparator_factory=None, doc=None, info=None)¶ Construct a new
SynonymProperty
object.This constructor is mirrored as a public API function; see
synonym()
for a full usage and argument description.
-
cascade_iterator
(type_, state, visited_instances=None, halt_on=None)¶ - inherited from the
cascade_iterator()
method ofMapperProperty
Iterate through instances related to the given instance for a particular ‘cascade’, starting with this MapperProperty.
Return an iterator3-tuples (instance, mapper, state).
Note that the ‘cascade’ collection on this MapperProperty is checked first for the given type before cascade_iterator is called.
This method typically only applies to RelationshipProperty.
-
class_attribute
¶ - inherited from the
class_attribute
attribute ofMapperProperty
Return the class-bound descriptor corresponding to this
MapperProperty
.This is basically a
getattr()
call:return getattr(self.parent.class_, self.key)
I.e. if this
MapperProperty
were namedaddresses
, and the class to which it is mapped isUser
, this sequence is possible:>>> from sqlalchemy import inspect >>> mapper = inspect(User) >>> addresses_property = mapper.attrs.addresses >>> addresses_property.class_attribute is User.addresses True >>> User.addresses.property is addresses_property True
-
create_row_processor
(context, path, mapper, result, adapter, populators)¶ - inherited from the
create_row_processor()
method ofMapperProperty
Produce row processing functions and append to the given set of populators lists.
-
do_init
()¶ - inherited from the
do_init()
method ofMapperProperty
Perform subclass-specific initialization post-mapper-creation steps.
This is a template method called by the
MapperProperty
object’s init() method.
-
extension_type
= symbol('NOT_EXTENSION')¶
-
init
()¶ - inherited from the
init()
method ofMapperProperty
Called after all mappers are created to assemble relationships between mappers and perform other post-mapper-creation initialization steps.
-
merge
(session, source_state, source_dict, dest_state, dest_dict, load, _recursive, _resolve_conflict_map)¶ - inherited from the
merge()
method ofMapperProperty
Merge the attribute represented by this
MapperProperty
from source to destination object.
-
post_instrument_class
(mapper)¶ - inherited from the
post_instrument_class()
method ofMapperProperty
Perform instrumentation adjustments that need to occur after init() has completed.
The given Mapper is the Mapper invoking the operation, which may not be the same Mapper as self.parent in an inheritance scenario; however, Mapper will always at least be a sub-mapper of self.parent.
This method is typically used by StrategizedProperty, which delegates it to LoaderStrategy.init_class_attribute() to perform final setup on the class-bound InstrumentedAttribute.
-
setup
(context, entity, path, adapter, **kwargs)¶ - inherited from the
setup()
method ofMapperProperty
Called by Query for the purposes of constructing a SQL statement.
Each MapperProperty associated with the target mapper processes the statement referenced by the query context, adding columns and/or criterion as appropriate.
-
-
class
sqlalchemy.orm.query.
QueryContext
(query)¶
-
class
sqlalchemy.orm.attributes.
QueryableAttribute
(class_, key, impl=None, comparator=None, parententity=None, of_type=None)¶ Bases:
sqlalchemy.orm.base._MappedAttribute
,sqlalchemy.orm.base.InspectionAttr
,sqlalchemy.orm.interfaces.PropComparator
Base class for descriptor objects that intercept attribute events on behalf of a
MapperProperty
object. The actualMapperProperty
is accessible via theQueryableAttribute.property
attribute.-
__eq__
(other)¶ - inherited from the
__eq__()
method ofColumnOperators
Implement the
==
operator.In a column context, produces the clause
a = b
. If the target isNone
, producesa IS NULL
.
-
__le__
(other)¶ - inherited from the
__le__()
method ofColumnOperators
Implement the
<=
operator.In a column context, produces the clause
a <= b
.
-
__lt__
(other)¶ - inherited from the
__lt__()
method ofColumnOperators
Implement the
<
operator.In a column context, produces the clause
a < b
.
-
__ne__
(other)¶ - inherited from the
__ne__()
method ofColumnOperators
Implement the
!=
operator.In a column context, produces the clause
a != b
. If the target isNone
, producesa IS NOT NULL
.
-
adapter
¶ - inherited from the
adapter
attribute ofPropComparator
Produce a callable that adapts column expressions to suit an aliased version of this comparator.
-
all_
()¶ - inherited from the
all_()
method ofColumnOperators
Produce a
all_()
clause against the parent object.버전 1.1에 추가.
-
any
(criterion=None, **kwargs)¶ - inherited from the
any()
method ofPropComparator
Return true if this collection contains any member that meets the given criterion.
The usual implementation of
any()
isRelationshipProperty.Comparator.any()
.매개 변수:
-
any_
()¶ - inherited from the
any_()
method ofColumnOperators
Produce a
any_()
clause against the parent object.버전 1.1에 추가.
-
asc
()¶ - inherited from the
asc()
method ofColumnOperators
Produce a
asc()
clause against the parent object.
-
between
(cleft, cright, symmetric=False)¶ - inherited from the
between()
method ofColumnOperators
Produce a
between()
clause against the parent object, given the lower and upper range.
-
collate
(collation)¶ - inherited from the
collate()
method ofColumnOperators
Produce a
collate()
clause against the parent object, given the collation string.
-
concat
(other)¶ - inherited from the
concat()
method ofColumnOperators
Implement the ‘concat’ operator.
In a column context, produces the clause
a || b
, or uses theconcat()
operator on MySQL.
-
contains
(other, **kwargs)¶ - inherited from the
contains()
method ofColumnOperators
Implement the ‘contains’ operator.
In a column context, produces the clause
LIKE '%<other>%'
-
desc
()¶ - inherited from the
desc()
method ofColumnOperators
Produce a
desc()
clause against the parent object.
-
distinct
()¶ - inherited from the
distinct()
method ofColumnOperators
Produce a
distinct()
clause against the parent object.
-
endswith
(other, **kwargs)¶ - inherited from the
endswith()
method ofColumnOperators
Implement the ‘endswith’ operator.
In a column context, produces the clause
LIKE '%<other>'
-
extension_type
= symbol('NOT_EXTENSION')¶
-
has
(criterion=None, **kwargs)¶ - inherited from the
has()
method ofPropComparator
Return true if this element references a member which meets the given criterion.
The usual implementation of
has()
isRelationshipProperty.Comparator.has()
.매개 변수:
-
ilike
(other, escape=None)¶ - inherited from the
ilike()
method ofColumnOperators
Implement the
ilike
operator.In a column context, produces the clause
a ILIKE other
.E.g.:
select([sometable]).where(sometable.c.column.ilike("%foobar%"))
매개 변수:
-
in_
(other)¶ - inherited from the
in_()
method ofColumnOperators
Implement the
in
operator.In a column context, produces the clause
a IN other
. “other” may be a tuple/list of column expressions, or aselect()
construct.
-
info
¶ Return the ‘info’ dictionary for the underlying SQL element.
The behavior here is as follows:
- If the attribute is a column-mapped property, i.e.
ColumnProperty
, which is mapped directly to a schema-levelColumn
object, this attribute will return theSchemaItem.info
dictionary associated with the core-levelColumn
object. - If the attribute is a
ColumnProperty
but is mapped to any other kind of SQL expression other than aColumn
, the attribute will refer to theMapperProperty.info
dictionary associated directly with theColumnProperty
, assuming the SQL expression itself does not have its own.info
attribute (which should be the case, unless a user-defined SQL construct has defined one). - If the attribute refers to any other kind of
MapperProperty
, includingRelationshipProperty
, the attribute will refer to theMapperProperty.info
dictionary associated with thatMapperProperty
. - To access the
MapperProperty.info
dictionary of theMapperProperty
unconditionally, including for aColumnProperty
that’s associated directly with aschema.Column
, the attribute can be referred to usingQueryableAttribute.property
attribute, asMyClass.someattribute.property.info
.
버전 0.8.0에 추가.
- If the attribute is a column-mapped property, i.e.
-
is_
(other)¶ - inherited from the
is_()
method ofColumnOperators
Implement the
IS
operator.Normally,
IS
is generated automatically when comparing to a value ofNone
, which resolves toNULL
. However, explicit usage ofIS
may be desirable if comparing to boolean values on certain platforms.버전 0.7.9에 추가.
-
isnot
(other)¶ - inherited from the
isnot()
method ofColumnOperators
Implement the
IS NOT
operator.Normally,
IS NOT
is generated automatically when comparing to a value ofNone
, which resolves toNULL
. However, explicit usage ofIS NOT
may be desirable if comparing to boolean values on certain platforms.버전 0.7.9에 추가.
-
like
(other, escape=None)¶ - inherited from the
like()
method ofColumnOperators
Implement the
like
operator.In a column context, produces the clause
a LIKE other
.E.g.:
select([sometable]).where(sometable.c.column.like("%foobar%"))
매개 변수:
-
match
(other, **kwargs)¶ - inherited from the
match()
method ofColumnOperators
Implements a database-specific ‘match’ operator.
match()
attempts to resolve to a MATCH-like function or operator provided by the backend. Examples include:- Postgresql - renders
x @@ to_tsquery(y)
- MySQL - renders
MATCH (x) AGAINST (y IN BOOLEAN MODE)
- Oracle - renders
CONTAINS(x, y)
- other backends may provide special implementations.
- Backends without any special implementation will emit the operator as “MATCH”. This is compatible with SQlite, for example.
- Postgresql - renders
-
notilike
(other, escape=None)¶ - inherited from the
notilike()
method ofColumnOperators
implement the
NOT ILIKE
operator.This is equivalent to using negation with
ColumnOperators.ilike()
, i.e.~x.ilike(y)
.버전 0.8에 추가.
-
notin_
(other)¶ - inherited from the
notin_()
method ofColumnOperators
implement the
NOT IN
operator.This is equivalent to using negation with
ColumnOperators.in_()
, i.e.~x.in_(y)
.버전 0.8에 추가.
-
notlike
(other, escape=None)¶ - inherited from the
notlike()
method ofColumnOperators
implement the
NOT LIKE
operator.This is equivalent to using negation with
ColumnOperators.like()
, i.e.~x.like(y)
.버전 0.8에 추가.
-
nullsfirst
()¶ - inherited from the
nullsfirst()
method ofColumnOperators
Produce a
nullsfirst()
clause against the parent object.
-
nullslast
()¶ - inherited from the
nullslast()
method ofColumnOperators
Produce a
nullslast()
clause against the parent object.
-
op
(opstring, precedence=0, is_comparison=False)¶ -
produce a generic operator function.
e.g.:
somecolumn.op("*")(5)
produces:
somecolumn * 5
This function can also be used to make bitwise operators explicit. For example:
somecolumn.op('&')(0xff)
is a bitwise AND of the value in
somecolumn
.매개 변수: - operator¶ – a string which will be output as the infix operator between this element and the expression passed to the generated function.
- precedence¶ –
precedence to apply to the operator, when parenthesizing expressions. A lower number will cause the expression to be parenthesized when applied against another operator with higher precedence. The default value of
0
is lower than all operators except for the comma (,
) andAS
operators. A value of 100 will be higher or equal to all operators, and -100 will be lower than or equal to all operators.버전 0.8에 추가: - added the ‘precedence’ argument.
- is_comparison¶ –
if True, the operator will be considered as a “comparison” operator, that is which evaluates to a boolean true/false value, like
==
,>
, etc. This flag should be set so that ORM relationships can establish that the operator is a comparison operator when used in a custom join condition.버전 0.9.2에 추가: - added the
Operators.op.is_comparison
flag.
-
parent
¶ Return an inspection instance representing the parent.
This will be either an instance of
Mapper
orAliasedInsp
, depending upon the nature of the parent entity which this attribute is associated with.
-
property
¶ Return the
MapperProperty
associated with thisQueryableAttribute
.Return values here will commonly be instances of
ColumnProperty
orRelationshipProperty
.
-
startswith
(other, **kwargs)¶ - inherited from the
startswith()
method ofColumnOperators
Implement the
startwith
operator.In a column context, produces the clause
LIKE '<other>%'
-
-
class
sqlalchemy.orm.session.
UOWTransaction
(session)¶ -
filter_states_for_dep
(dep, states)¶ Filter the given list of InstanceStates to those relevant to the given DependencyProcessor.
-
finalize_flush_changes
()¶ mark processed objects as clean / deleted after a successful flush().
this method is called within the flush() method after the execute() method has succeeded and the transaction has been committed.
-
get_attribute_history
(state, key, passive=symbol('PASSIVE_NO_INITIALIZE'))¶ facade to attributes.get_state_history(), including caching of results.
-
is_deleted
(state)¶ return true if the given state is marked as deleted within this uowtransaction.
-
remove_state_actions
(state)¶ remove pending actions for a state from the uowtransaction.
-
was_already_deleted
(state)¶ return true if the given state is expired and was deleted previously.
-