我有一个简单的“发票”类,具有必须由应用程序在用户保存发票时分配的“数量”属性 。有 一些制约因素:在SQLAlchemy中使用自定义逻辑自动递增属性
1)应用程序是(瘦)客户端 - 服务器之一,所以无论 分配数量必须寻找出碰撞
2)发票有一个“版本”属性也一样,所以我不能使用一个简单的 DBMS级别的自动增量字段
我试图建立这个使用自定义类型,它会在发票得到保存每个 时间踢。每当process_bind_param被调用 一个None值时,它将调用某种类型的单例来确定 号码并避免冲突。这是一个体面的解决方案? 无论如何,我有一个问题..这里是我的自定义类型:
class AutoIncrement(types.TypeDecorator):
impl = types.Unicode
def copy(self):
return AutoIncrement()
def process_bind_param(self, value, dialect):
if not value:
# Must find next autoincrement value
value = "1" # Test value :)
return value
我的问题现在的问题是,当我保存发票和自动增加 设定为“1”的价值它的编号,发票实例不会得到 用新的数字更新..这是预期的吗?我是否缺少 的东西? 非常感谢您的时间!
(SQLA 0.5.3关于Python 2.6,使用PostgreSQL 8.3)
编辑:迈克尔·拜尔告诉我,这是正常现象,因为TypeDecorators不使用默认值处理。
哎哟不知道你可以在那里使用callable,谢谢!我会马上试试:) – Joril 2009-06-24 12:57:27