2014-02-10 27 views
0

我在DAL中設置(bigint_id = True),因爲我的itemNumber字段也被用作其他表中的主鍵。在一個特定的表中,我將它用作唯一字段,但不是主鍵Web2py BigInt顯示爲0. Bigint_id = True

mydb.define_table('myitems', 
        Field('id', 'id',notnull=True,unique=True), 
        Field('itemNumber', 'bigint',notnull=True,unique=True), 
        Field('uniqueTitle', 'string'), 

嘗試插入時,它始終插入爲「0」。 然而,當我打印該行,我會看到正確的數字:例如111078127801

mydb.myitems.update_or_insert(mydb.myitems.itemNumber==int(row), 
           uniqueTitle=fileName) 

我做了一個打印INT(行)和打印行都表現出了應有的價值。 。 插入,它迫使0 我都一直指定字段(「itemNumber」作爲BIGINT和整數都具有相同的結果時它

感謝,

約翰

+0

您的'.update_or_insert'語句根本沒有插入itemNumber的值 - 它只是更新itemNumber匹配「int(row)」的任何記錄的uniqueTitle字段。在插入時,我認爲你會得到一個數據庫錯誤,因爲沒有指定itemNumber,並且你有'notnull = True'(儘管如果你在原始表創建之後添加了'notnull = True',我不確定if該約束將在數據庫中更新)。 – Anthony

+0

如果要執行插入操作,使用.update_or_insert將行插入itemNumber的方法是什麼? – user3211229

回答

0

嘗試:

mydb.myitems.update_or_insert(mydb.myitems.itemNumber==int(row), 
           itemNumber=int(row), uniqueTitle=fileName) 

如果第一個參數是一個查詢,它只是選擇記錄進行更新(如果有的話),你仍然必須指定所有要插入/更新的字段值。

+0

那肯定解決了它!謝謝你,安東尼 – user3211229