2012-03-19 69 views
1

我知道這工作正常,如果我的數據庫是MySQL。也許還有其他人。web.py DB INSERT中便攜(或不)使用SQLLiteral(「NOW()」)的方式嗎?

seq_id = db.insert('mytable', first="Bob",last="Smith",joined=web.SQLLiteral("NOW()")) 

那麼現在,數據庫的客戶將使用 MySQL的,但它可能不會在不久的將來的情況。如果客戶決定必須使用Postgres,Oracle,SQL Server和其他軟件,我該如何確保不會遇到麻煩?

回答

3

CURRENT_TIMESTAMPis synonymousNOW()和標準的SQL,所以你可能會優先使用它。

+0

不錯!什麼是「更加標準」,帶或不帶括號?或者兩者同樣如此? – JCCyC 2012-03-19 20:10:32

+1

@JCCyC - 無括號。在SQL Server中,你不會得到選擇。使用'CURRENT_TIMESTAMP()'是錯誤的 – 2012-03-19 20:12:39

1

其不。 Now()將無法​​在SQL服務器或Oracle中工作。

它也可能不值得擔心它在內置函數級別,因爲在此之前還有很多其他問題。

例如,這僅適用於MySQL的,即使它不使用內置函數

SELECT a, MAX(b), c 
FROM 
    table 
GROUP BY 
     a 

最好的辦法是,以確保您的數據訪問是從你的代碼的其餘部分分離乾淨,如果你」真的很擔心它,併爲你關心的每個數據庫建立一個新的數據訪問層。