我试图理解ORMs如何能够通过class属性解析表列,而不显式地提供表名和列名
from orm import Column
class Car(Model):
id = Column()
然后,查询可以执行以下操作:
Car.select().where(Car.id == 7)
我知道Column为__eq__
操作符定义了一个方法,但是Column实例怎么知道它引用的是类Car
和属性id
(假设默认情况下它们用于表名和列名)
通过深入了解ORM libs的工作原理,我学到了很多关于python的知识
Tags:
在SqlAlchemy和DJango ORM中,基类(
Model
)与执行内省的元类或工厂方法(如__new__
)相关联下面是如何使用函数进行复制(更简单的解决方案):
这个
setup_class
函数内省cls类并设置name属性(如果它是空的或None
),例如:编辑
使用元类的实现示例:
当然,这还不够。你必须明白
Column
是descriptor。此描述符用于构建SQL查询相关问题 更多 >
编程相关推荐