Skip to main content
 首页 » 编程设计

python之SQLAlchemy之模型之使用动态字段之ActiveRecord

2025年05月04日23del

我离在 SQLAlchemy 中定义模型还有多远:

class Person(Base):   
    pass 

然后让它动态获取字段名称?无论如何要获得命名约定来控制表之间的关系?我想我正在寻找类似于 RoR 的 ActiveRecord 但在 Python 中的东西。

不确定这是否重要,但我会尝试在 IronPython 而不是 cPython 下使用它。

请您参考如下方法:

自动取字段名很简单:

from sqlalchemy import Table 
from sqlalchemy.orm import MetaData, mapper 
 
metadata = MetaData() 
metadata.bind = engine 
 
person_table = Table(metadata, "tablename", autoload=True) 
 
class Person(object): 
    pass 
 
mapper(Person, person_table) 

使用这种方法,您必须在调用 mapper() 时定义关系,因此不会自动发现关系。

要自动将类映射到具有相同名称的表,您可以这样做:

def map_class(class_): 
    table = Table(metadata, class_.__name__, autoload=True) 
    mapper(class_, table) 
 
map_class(Person) 
map_class(Order) 

Elixir 可能会做你想做的一切。