Независимая от базы данных функция to_char в SQLAlchemy - PullRequest
3 голосов
/ 04 августа 2009

Я использую SQLAlchemy для создания независимых от базы данных запросов.

У меня одна проблема с функцией to_char.

Рассмотрим простой запрос:

select to_char(id,'999') from xyz 

Он работает на Postgres, но MySQL его не поддерживает.

Как сделать этот запрос независимым от базы данных с помощью SQLAlchemy?

Ответы [ 3 ]

3 голосов
/ 05 августа 2009

используйте функцию CAST для простых преобразований типов. это стандарт SQL, и SQLAlchemy поддерживает его напрямую через функцию cast (): http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/expressions.html?highlight=cast#sqlalchemy.sql.expression.cast.

для значений даты, SQLA имеет функцию extract (), которая создает функцию SQL EXTRACT - слой перевода переводит общие имена полей, такие как «месяц», «день», «минута» и т. Д., В соответствующее ключевое слово для внутреннего интерфейса в использовать.

2 голосов
/ 02 октября 2012

Используйте функцию приведения, например

cast(numberfield as char)
0 голосов
/ 04 августа 2009

Вы ищете format в MySQL:

select format(id, '999') from xyz

Чтобы ответить на ваш вопрос «все в одном»: для этого не существует кросс-базы данных. Каждая СУБД сильно отличается, и за довольно простыми запросами нет реальной стандартизации. Это особенно верно для манипуляций со строками.

...