我在想办法绕过炼金术。我试图找出如何通过表实例访问Column对象。在
我目前用Peewee作为ORM编写了我的应用程序,在那里我可以执行以下操作:
In [15]:from db.models.vehicle import Vehicle
In [16]: Vehicle.code
Out[16]: <db.fields.RsCharField at 0x7fd93e53e780>
In [17]: Vehicle.code.default
Out[17]: ''
或者通过一个实际的例子:
^{pr2}$当我在SQLAlchemy中执行同样的操作时,我得到一个:
In [11]: Vehicle.code
Out[11]: <sqlalchemy.orm.attributes.InstrumentedAttribute at 0x7fd9105f2938>
但我希望有实际的列类型,因为我扩展了列类型以拥有我想要访问的额外属性:
class RsColumn(Column):
def __init__(self, *args, ui_group=None, ui_sequence=None, **kwargs):
self.ui_group = ui_group
self.ui_sequence = ui_sequence
super().__init__(*args, **kwargs)
(因此,在本例中,我想访问在表声明中使用的RsColumn对象)
你可以在SQLAlchemy Documentation: Accessing Tables and Columns里读到
加上谢尔盖的回答, 访问表类中的关系属性将返回InstrumentedAttribute。在
用于从父表访问子表的列。在
例如
class Bbc(Base): name = Column(String) ... code_policy = relationship('CodePolicy') # related via foreign key
class CodePolicy(Base): policy_description = Column(String)
如果要通过code_-policy关系从Bbc表访问CodePolicy表中的列,则
Bbc.code_policy.property.table.c.policy_description
相关问题 更多 >
编程相关推荐