sqlalchemy.orm.mapper(class_, local_table=None, properties=None, primary_key=None, non_primary=False, inherits=None, inherit_condition=None, inherit_foreign_keys=None, extension=None, order_by=False, always_refresh=False, version_id_col=None, version_id_generator=None, polymorphic_on=None, _polymorphic_map=None, polymorphic_identity=None, concrete=False, with_polymorphic=None, allow_partial_pks=True, batch=True, column_prefix=None, include_properties=None, exclude_properties=None, passive_updates=True, passive_deletes=False, confirm_deleted_rows=True, eager_defaults=False, legacy_is_orphan=False, _compiled_cache_size=100)¶返回一个新的Mapper对象。
该功能通常通过声明扩展在幕后使用。当使用Declarative时,许多通常的mapper()参数由Declarative扩展本身处理,包括class_,local_table,properties,inherits。其他选项使用__mapper_args__类变量传递给mapper():
class MyClass(Base):
__tablename__ = 'my_table'
id = Column(Integer, primary_key=True)
type = Column(String(50))
alt = Column("some_alt", Integer)
__mapper_args__ = {
'polymorphic_on' : type
}显式使用mapper()通常被称为经典映射。上面的声明性示例在经典形式上等同于:
my_table = Table("my_table", metadata,
Column('id', Integer, primary_key=True),
Column('type', String(50)),
Column("some_alt", Integer)
)
class MyClass(object):
pass
mapper(MyClass, my_table,
polymorphic_on=my_table.c.type,
properties={
'alt':my_table.c.some_alt
})也可以看看
Classical Mappings - 讨论直接使用mapper()
| 参数: |
|
|---|
sqlalchemy.orm。 T0> object_mapper T1> ( T2> 实例 T3> ) T4> ¶ T5 >给定一个对象,返回与对象实例关联的主映射器。
如果未配置映射,则引发sqlalchemy.orm.exc.UnmappedInstanceError。
该功能可通过检查系统获得:
inspect(instance).mapper如果实例不是映射的一部分,则使用检查系统将引发sqlalchemy.exc.NoInspectionAvailable。
sqlalchemy.orm.class_mapper(class_, configure=True)¶给定一个类,返回与密钥关联的主要Mapper。
如果给定类没有配置映射,则引发UnmappedClassError;如果传递了非类对象,则引发ArgumentError。
等效功能可通过inspect()函数使用:
inspect(some_mapped_class)如果该类未映射,则使用检查系统将引发sqlalchemy.exc.NoInspectionAvailable。
sqlalchemy.orm。 T0> configure_mappers T1> ( T2> ) T3> ¶ T4>初始化到目前为止已经构建的所有映射器的映射器间关系。
这个函数可以调用任意次数,但在大多数情况下会自动调用,使用第一次映射,以及每当使用映射和额外尚未配置的映射器已经构建。
出现这种情况的要点包括何时将映射类实例化为实例,以及何时使用Session.query()方法。
configure_mappers()函数提供了几个可用于扩充其功能的事件挂钩。这些方法包括:
MapperEvents.before_configured() - called once before configure_mappers() does any work; this can be used to establish additional options, properties, or related mappings before the operation proceeds.MapperEvents.mapper_configured() - called as each indivudal Mapper is configured within the process; will include all mapper state except for backrefs set up by other mappers that are still to be configured.MapperEvents.after_configured() - called once after configure_mappers() is complete; at this stage, all Mapper objects that are known to SQLAlchemy will be fully configured. 请注意,调用应用程序可能还有其他尚未生成的映射,例如,如果它们尚处于未导入模块中。 sqlalchemy.orm。 T0> clear_mappers T1> ( T2> ) T3> ¶ T4>从所有类中移除所有映射器。
这个函数从类中移除所有的工具并处理它们相关的映射器。一旦被调用,这些类就会被取消映射,并可以在以后用新的映射器重新映射。
clear_mappers() is not for normal use, as there is literally no valid usage for it outside of very specific testing scenarios. 通常,映射器是用户定义类的永久性结构组件,并且不会独立于类而丢弃它。如果一个映射类本身被垃圾收集,它的映射器也会自动处理。因此,clear_mappers()仅用于测试套件中,该测试套件将重复使用具有不同映射的相同类,这本身就是极其罕见的用例 - 唯一的这种用例实际上是SQLAlchemy自己的测试套件以及可能的其他ORM扩展库的测试套件,这些扩展库打算根据固定的一组类来测试映射器构造的各种组合。
sqlalchemy.orm.util.identity_key(*args, **kwargs)¶生成“身份密钥”元组,就像在Session.identity_map字典中用作键一样。
这个函数有几种调用方式:
identity_key(class, ident)
该表单接收映射类和主键标量或元组作为参数。
例如。:
>>> identity_key(MyClass, (1, 2))
(<class '__main__.MyClass'>, (1, 2))| 参数类: | 映射类(必须是位置参数) |
|---|---|
| 参数标识: | 主键,可能是标量或元组参数。 |
identity_key(instance=instance)
此表单将为给定实例生成身份密钥。该实例不必是持久性的,只需要填充其主键属性(否则对于那些缺失值,键将包含None)。
例如。:
>>> instance = MyClass(1, 2)
>>> identity_key(instance=instance)
(<class '__main__.MyClass'>, (1, 2))在这种形式下,给定实例最终通过Mapper.identity_key_from_instance()运行,如果对象已过期,将会对相应的行执行数据库检查。
| 参数实例: | 对象实例(必须作为关键字arg提供) |
|---|
identity_key(class, row = row)
除了将一个数据库结果行作为RowProxy对象传递外,此表单与类/元组表单类似。
例如。:
>>> row = engine.execute("select * from table where a=1 and b=2").first()
>>> identity_key(MyClass, row=row)
(<class '__main__.MyClass'>, (1, 2))| 参数类: | 映射类(必须是位置参数) |
|---|---|
| 参数行: | RowProxy row returned by a ResultProxy (must be given as a keyword arg) |
sqlalchemy.orm.util.polymorphic_union(table_map, typecolname, aliasname='p_union', cast_nulls=True)¶创建一个由多态映射器使用的UNION语句。
有关如何使用它的示例,请参阅Concrete Table Inheritance。
| 参数: |
|
|---|
sqlalchemy.orm.mapper.Mapper(class_, local_table=None, properties=None, primary_key=None, non_primary=False, inherits=None, inherit_condition=None, inherit_foreign_keys=None, extension=None, order_by=False, always_refresh=False, version_id_col=None, version_id_generator=None, polymorphic_on=None, _polymorphic_map=None, polymorphic_identity=None, concrete=False, with_polymorphic=None, allow_partial_pks=True, batch=True, column_prefix=None, include_properties=None, exclude_properties=None, passive_updates=True, passive_deletes=False, confirm_deleted_rows=True, eager_defaults=False, legacy_is_orphan=False, _compiled_cache_size=100)¶基础:sqlalchemy.orm.base.InspectionAttr
定义类属性与数据库表列的关联。
Mapper对象使用mapper()函数实例化。有关实例化新的Mapper对象的信息,请参阅该函数的文档。
当mapper()明确用于链接用户定义的类和表元数据时,这被称为经典映射。现代SQLAlchemy用法倾向于支持类配置的sqlalchemy.ext.declarative扩展,这使得在后台使用mapper()。
给定一个已知由ORM映射的类,可以使用inspect()函数获取维护它的Mapper:
from sqlalchemy import inspect
mapper = inspect(MyClass)由sqlalchemy.ext.declarative扩展名映射的类也将通过__mapper__属性使其映射器可用。
__init__(class_, local_table=None, properties=None, primary_key=None, non_primary=False, inherits=None, inherit_condition=None, inherit_foreign_keys=None, extension=None, order_by=False, always_refresh=False, version_id_col=None, version_id_generator=None, polymorphic_on=None, _polymorphic_map=None, polymorphic_identity=None, concrete=False, with_polymorphic=None, allow_partial_pks=True, batch=True, column_prefix=None, include_properties=None, exclude_properties=None, passive_updates=True, passive_deletes=False, confirm_deleted_rows=True, eager_defaults=False, legacy_is_orphan=False, _compiled_cache_size=100)¶构建一个新的Mapper对象。
这个构造函数被镜像为公共API函数;有关完整的用法和参数描述,请参阅mapper()。
add_properties T0> ( T1> dict_of_properties T2> ) T3> ¶ T4>使用add_property将给定的属性字典添加到此映射器中。
add_property(key, prop)¶添加一个单独的MapperProperty到这个映射器。
如果映射器尚未配置,只需将该属性添加到发送给构造函数的初始属性字典中即可。如果这个Mapper已经配置完毕,那么给定的MapperProperty会立即配置。
all_orm_descriptors T0> ¶ T1>与映射类关联的所有InspectionAttr属性的名称空间。
这些属性在所有情况下都是与映射类或其超类关联的Python descriptors。
该名称空间包括映射到该类的属性以及由扩展模块声明的属性。它包含从InspectionAttr继承的任何Python描述符类型。这包括QueryableAttribute以及扩展类型,例如hybrid_property,hybrid_method和AssociationProxy。
为了区分映射属性和扩展属性,属性InspectionAttr.extension_type将引用区分不同扩展类型的常量。
在处理QueryableAttribute时,QueryableAttribute.property属性指向MapperProperty属性,这是您在引用映射集合时获得的通过Mapper.attrs的属性。
警告
Mapper.all_orm_descriptors访问器名称空间是OrderedProperties的一个实例。这是一个类似字典的对象,它包含少量的命名方法,如OrderedProperties.items()和OrderedProperties.values()。When accessing attributes dynamically, favor using the dict-access scheme, e.g. mapper.all_orm_descriptors[somename] over getattr(mapper.all_orm_descriptors, somename) to avoid name collisions.
0.8.0版本中的新功能
也可以看看
ATTRS T0> ¶ T1>所有MapperProperty对象的名称空间都与此映射器关联。
这是一个基于其关键名称提供每个属性的对象。例如,具有User.name属性的User类的映射器将提供mapper.attrs.name,它将是ColumnProperty表示name列。命名空间对象也可以迭代,这会产生每个MapperProperty。
Mapper has several pre-filtered views of this attribute which limit the types of properties returned, inclding synonyms, column_attrs, relationships, and composites.
警告
Mapper.attrs访问器名称空间是OrderedProperties的实例。这是一个类似字典的对象,它包含少量的命名方法,如OrderedProperties.items()和OrderedProperties.values()。When accessing attributes dynamically, favor using the dict-access scheme, e.g. mapper.attrs[somename] over getattr(mapper.attrs, somename) to avoid name collisions.
base_mapper =无 ¶继承链中最基本的Mapper。
在非继承场景中,该属性将始终是Mapper。在继承场景中,它引用了Mapper,它是继承链中所有其他Mapper对象的父对象。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
c =无 ¶cascade_iterator(type_, state, halt_on=None)¶迭代对象图中的每个元素及其映射器,以满足给定级联规则的所有关系。
| 参数: |
|
|---|---|
| 返回: | 该方法产生单独的对象实例。 |
class _ =无 ¶这个Mapper映射的Python类。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
class_manager =无 ¶ClassManager,它为这个Mapper维护事件侦听器和类绑定描述符。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
column_attrs T0> ¶ T1>返回由Mapper维护的所有ColumnProperty属性的命名空间。
也可以看看
Mapper.attrs - 所有MapperProperty对象的命名空间。
列 =无 ¶由Mapper维护的Column或其他标量表达式对象的集合。
该集合的行为与任何Table对象的c属性的行为相同,区别仅在于此映射中包含的那些列存在,并且基于属性名称在映射中定义,不一定是Column本身的key属性。另外,这里还存在由column_property()映射的标量表达式。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
common_parent T0> ( T1> 其他 T2> ) T3> ¶ T4>如果给定的映射器与此映射器共享共同的继承父项,则返回true。
复合材料 T0> ¶ T1>返回由Mapper维护的所有CompositeProperty属性的命名空间。
也可以看看
Mapper.attrs - 所有MapperProperty对象的命名空间。
具体 =无 ¶如果Mapper是一个具体的继承映射器,则表示True。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
已配置 =无 ¶如果已经配置Mapper,则表示True。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
也可以看看
实体 T0> ¶ T1>检查API的一部分。
返回self.class_。
get_property ( key,_configure_mappers = True ) t5 >返回与给定键相关联的MapperProperty。
get_property_by_column T0> ( T1> 列 T2> ) T3> ¶ T4>给定一个Column对象,返回映射此列的MapperProperty。
identity_key_from_instance T0> ( T1> 实例 T2> ) T3> ¶ T4>根据主键属性返回给定实例的身份关键字。
如果实例的状态已过期,则调用此方法将导致数据库检查以查看该对象是否已被删除。如果该行不再存在,则引发ObjectDeletedError。
该值通常也可以在属性名称键下的实例状态中找到。
identity_key_from_primary_key T0> ( T1> primary_key T2> ) T3> ¶ T4>返回身份地图密钥以用于存储/检索身份地图中的项目。
| 参数: | primary_key ¶ - 指示标识符的值列表。 |
|---|
identity_key_from_row ( row,adapter = None ) t5 >返回身份地图密钥,用于从身份地图中存储/检索项目。
| 参数: | row¶ – A RowProxy instance. The columns which are mapped by this Mapper should be locatable in the row, preferably via the Column object directly (as is the case when a select() construct is executed), or via string names of the form <tablename>_<colname>. |
|---|
is_mapper = True ¶检查API的一部分。
赛 T0> ( T1> 其他 T2> ) T3> ¶ T4>如果此映射器从给定的映射器继承,则返回True。
iterate_properties T0> ¶ T1>返回所有MapperProperty对象的迭代器。
local_table =无 ¶这个Mapper管理的Selectable。
“本地”表是Mapper直接负责从属性访问和刷新角度管理的可选项。对于非继承映射器,本地表与“映射”表相同。对于连接表继承映射器,local_table将是这个Mapper所代表的整体“连接”的特定子表。如果这个映射器是一个单表继承映射器,local_table将是None。
也可以看看
mapped_table =无 ¶Mapper映射到的Selectable。
“映射”表是映射器在查询期间选择的可选项。对于非继承映射器,映射表与“本地”表相同。对于连接表继承映射器,mapped_table引用表示此特定子类的完整行的完整Join。对于单表继承映射器,mapped_table引用基表。
也可以看看
映射器 T0> ¶ T1>检查API的一部分。
返回自我。
non_primary =无 ¶如果Mapper是一个“非主要”映射器,则表示True。一个仅用于分隔行但不用于持久性管理的映射器。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
polymorphic_identity =无 ¶表示结果行加载过程中与polymorphic_on列匹配的标识符。
仅用于继承,此对象可以是任何类型,与polymorphic_on表示的列的类型相当。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
polymorphic_iterator T0> ( T1> ) T2> ¶ T3>遍历包含该映射器和所有后代映射器的集合。
这不仅包括立即继承的映射器,还包括它们的所有继承映射器。
要遍历整个层次结构,请使用mapper.base_mapper.polymorphic_iterator()。
polymorphic_map =无 ¶在继承场景中映射到Mapper实例的“多态身份”标识符的映射。
标识符可以是任何类型,与polymorphic_on表示的列的类型相当。
映射器的继承链将全部引用相同的多态映射对象。该对象用于将传入结果行关联到目标映射器。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
polymorphic_on =无 ¶在继承方案中,Column或SQL表达式被指定为该Mapper的polymorphic_on参数。
该属性通常是一个Column实例,但也可能是一个表达式,例如从cast()派生的表达式。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
primary_key =无 ¶从Mapper的角度来看,一个迭代器包含Column对象的集合,该对象构成映射表的“主键”。
该列表与mapped_table中的可选列表相反。在继承映射器的情况下,某些列可能由超类映射器管理。例如,对于Join,主键由Join引用的所有表中的所有主键列确定。
该列表也不一定与与基础表关联的主键列集合相同; Mapper具有primary_key参数,可以覆盖Mapper认为的主键列。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
primary_key_from_instance T0> ( T1> 实例 T2> ) T3> ¶ T4>返回给定实例的主键值列表。
如果实例的状态已过期,则调用此方法将导致数据库检查以查看该对象是否已被删除。如果该行不再存在,则引发ObjectDeletedError。
primary_mapper T0> ( T1> ) T2> ¶ T3>返回与此映射器的类关键字(类)相对应的主映射器。
关系 T0> ¶ T1>由Mapper维护的所有RelationshipProperty属性的命名空间。
警告
Mapper.relationships存取器名称空间是OrderedProperties的一个实例。这是一个类似字典的对象,它包含少量的命名方法,如OrderedProperties.items()和OrderedProperties.values()。When accessing attributes dynamically, favor using the dict-access scheme, e.g. mapper.relationships[somename] over getattr(mapper.relationships, somename) to avoid name collisions.
也可以看看
Mapper.attrs - 所有MapperProperty对象的命名空间。
可选 T0> ¶ T1>通常情况下,这相当于mapped_table,除非使用with_polymorphic功能,在这种情况下,将返回完整的“多态”选择。
self_and_descendants T0> ¶ T1>包含这个映射器和所有后代映射器的集合。
这不仅包括立即继承的映射器,还包括它们的所有继承映射器。
单 =无 ¶如果Mapper是单表继承映射器,则表示True。
local_table will be None if this flag is set.
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
同义词 T0> ¶ T1>返回由Mapper维护的所有SynonymProperty属性的名称空间。
也可以看看
Mapper.attrs - 所有MapperProperty对象的命名空间。
验证器 =无 ¶使用validates()装饰器修饰过的属性的不可变字典。
该字典包含字符串属性名称作为映射到实际验证方法的键。
with_polymorphic_mappers T0> ¶ T1>包含在默认“多态”查询中的Mapper对象列表。