2012-03-19 33 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 

最好的办法是,以确保您的数据访问是从你的代码的其余部分分离干净,如果你”真的很担心它,并为你关心的每个数据库建立一个新的数据访问层。