我正在使用sqlite3數據庫(測試花數據庫:))的web2py(python))。下面是表的聲明:其轉化爲正確的SQL中sql.log數據庫字段長度未強制執行
db.define_table('flower',
Field('code', type='string', length=4, required=True, unique=True),
Field('name', type='string', length=100, required=True),
Field('description', type='string', length=250, required=False),
Field('price', type='float', required=True),
Field('photo', 'upload'));
:
CREATE TABLE flower(
id INTEGER PRIMARY KEY AUTOINCREMENT,
code CHAR(4),
name CHAR(200),
description CHAR(250),
price CHAR(5),
photo CHAR(512)
);
但是當我插入的「代碼」字段,其大於4個字符的值,它仍插入。我嘗試設置爲CHAR(10)(簡單測試,我猜)具有相同的結果。
>>>db.flower.insert(code="123456789999", name="flower2", description="test flower 2", price="5.00");
>>>1L;
同樣的問題適用於我設置長度的所有字段。我也嘗試過驗證(雖然我不是100%正確使用它)。這也是花模型flowers.py內表的定義在哪裏以及如下表聲明:本
db.flower.code.requires = [ IS_NOT_EMPTY(), IS_LENGTH(4), IS_NOT_IN_DB(db, 'flower.code')]
文檔爲here,但我無法找到任何的限制條件的SQLite3或字符串的長度web2py的檢查。我希望在插入時看到一個錯誤。
希望對此有所幫助嗎?我在文檔中錯過了什麼?之前我在symphony2中使用了PHP和MySQL,並且期望類似的行爲。
謝謝Larry。就像我在安東尼的回答下所說:太糟糕了,我不能「接受」兩者。我會寫一些預插入檢查來執行這個長度。太好了! –