我在一个表中有这个列:
name = Column(String, default='ts-1')如何将默认值设置为自动递增,以便对象的名称将是'ts-1','ts-2','ts-3'...在创建时。
我试着写了一个构造函数:
def __init__(self):
self.name = 'ts-' + str(self.id)但是它总是返回None。
谢谢。
发布于 2015-03-13 07:45:56
我找到了一种使用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)https://stackoverflow.com/questions/28977267
复制相似问题