我有一個簡單的「發票」類,具有必須由應用程序在用戶保存發票時分配的「數量」屬性 。有 一些制約因素:在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