Насколько переносимо (или нет) использование SQLLiteral ("NOW ()") в INSERTs БД web.py? - PullRequest
1 голос
/ 19 марта 2012

Я знаю, что это нормально работает, если моя база данных MySQL.И, возможно, другие.

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

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

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

CURRENT_TIMESTAMP является синонимом с NOW() и стандартным SQL, так что вы также можете использовать его в предпочтениях.

1 голос
/ 19 марта 2012

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

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

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

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

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

...