使用sqlalchemy 0.7.2
有没有办法从查询对象中查找表类?例如:
q = session.query(Customers)
Run Code Online (Sandbox Code Playgroud)
我怎么能找到Customers的q?可能?不可能?
Sin*_*ion 11
是.你需要column_descriptions.
不过,这是一条漫长的道路. sqlalchemy.orm.Query.column_descriptions返回list的dict小号,描述每个查询实体它被给了query.在您的示例中,只有一个实体,因此您需要该列表中的第一个项目.既然你对查询实体的类型感兴趣,而不是它的结构,那么你需要"type"来自该列表的密钥:
q_entity = q.column_descriptions[0]['type']
assert q_entity == Customer
Run Code Online (Sandbox Code Playgroud)
访问映射类的表需要在映射器子系统中进行窥探.为此,你应该使用manager_of_class.可以通过以下mapper.mapped_table属性从管理器访问该表:
from sqlalchemy.orm.attribute import manager_of_class
q_table = manager_of_class(q_entity).mapper.mapped_table
Run Code Online (Sandbox Code Playgroud)
抵制的呼吁跳过海峡的mapper通过Customer.__mapper__,甚至Customer.__table__; 这是特定的sqlalchemy.ext.declarative,并且不适用于通过其他方式映射的类.
| 归档时间: |
|
| 查看次数: |
1453 次 |
| 最近记录: |