使用sqlalchemy中的其他属性值设置表属性值

时间:2015-03-11 01:53:18

标签: python sqlite sqlalchemy

我在表格中有这个专栏:

name = Column(String, default='ts-1')

如何设置默认值以自动增加,以便对象的名称在创建时为“ts-1”,“ts-2”,“ts-3”....

我试着写一个构造函数:

def __init__(self):
    self.name = 'ts-' + str(self.id)

但它总是返回None。

感谢。

1 个答案:

答案 0 :(得分:0)

我找到了一种使用sqlalchemy orm事件来解决这个问题的方法。结果很简单。我们的想法是在init上编写一个事件监听器,以便在创建对象时触发它。

所以现在我可以访问实例的id值。

from sqlalchemy import event

@event.listens_for(SomeClass, 'init')
    def change_name(target, args, kwargs):
    session.add(target)
    session.commit()
    target.name = 'sheet#' + str(target.id)