2012-03-19 1 views
1

Я знаю, что это прекрасно работает, если моя база данных - это MySQL. И, возможно, другие.Как переносимый (или нет) SQLLiteral ("NOW()") в web.py DB INSERT?

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

Ну, прямо сейчас, клиенты базы данных будут использовать является MySQL, но это не может быть дело в ближайшем будущем. Как я могу гарантировать, что у меня не будет головных болей, если клиент решит, что он должен работать над Postgres, Oracle, SQL Server и еще чего?

ответ

3

CURRENT_TIMESTAMPis synonymous с NOW() и стандартным SQL, чтобы вы могли использовать это предпочтение.

+0

Ницца! Что «более стандартное», с круглыми скобками или без них? Или оба одинаково? – JCCyC

+1

@JCCyC - Без круглых скобок. В SQL Server у вас нет выбора. Ошибка использования 'CURRENT_TIMESTAMP()' –

1

Его нет. Now() не будет работать ни на SQL-сервере, ни на Oracle.

Его также, вероятно, не стоит беспокоиться об этом на этом встроенном уровне функции, так как перед вами еще много других проблем.

Например, это работает только на MySQL, даже если он не использует встроенные функции

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

Лучше всего, чтобы убедиться, что доступ к данным вашего отделяется чисто от остальной части вашего кода, если вы re действительно беспокоились об этом и создали новый уровень доступа к данным для каждой интересующей вас базы данных.

 Смежные вопросы

  • Нет связанных вопросов^_^