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

标签 python activerecord ironpython sqlalchemy

我离在 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 可能会做你想做的一切。

关于python - SQLAlchemy - 模型 - 使用动态字段 - ActiveRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1165002/

相关文章:

python - 禁用键盘但继续获取事件

sql - Rails,迭代组查询的结果

ruby-on-rails - 通过终端添加一列

c# - 如何从 C# 运行 Python 脚本?

python - 如何在没有gil(nogil)的情况下在cython cdef中返回两个值

python - 检查输入 : expected dense_input to have shape (21, 时出错)但得到形状为 (1,) 的数组

mysql - 无法使用 ActiveRecord 更新属性

nhibernate - 如何从 IronPython 配置 NHibernate 类映射?

python - .NET 和 Python 通过 IronPython 互操作

来自字典的 Python 直方图