我正在使用 SQLAlchemy 进行与数据库无关的查询。
我面临一个to_char
功能问题。
考虑如下简单查询:
select to_char(id,'999') from xyz
它在 Postgres 上工作,但 MySQL 不支持它。
如何使用 SQLAlchemy 使这个查询独立于数据库?
我正在使用 SQLAlchemy 进行与数据库无关的查询。
我面临一个to_char
功能问题。
考虑如下简单查询:
select to_char(id,'999') from xyz
它在 Postgres 上工作,但 MySQL 不支持它。
如何使用 SQLAlchemy 使这个查询独立于数据库?
使用 CAST 函数进行简单的类型转换。它是 SQL 标准,SQLAlchemy 通过 cast() 函数直接支持它: http ://www.sqlalchemy.org/docs/05/reference/sqlalchemy/expressions.html?highlight=cast#sqlalchemy.sql.expression.cast 。
对于日期值,SQLA 有一个 extract() 函数,它产生 SQL EXTRACT 函数——一个翻译层将常见的字段名,如“月”、“天”、“分钟”等转换为正在使用的后端的适当关键字。
使用 cast 函数,例如
cast(numberfield as char)
format
您在 MySQL 中寻找:
select format(id, '999') from xyz
要回答您的多合一问题:没有跨数据库的方法可以做到这一点。每个 RDBMS 都非常不同,除了相当简单的查询之外,没有真正的标准化。对于字符串操作尤其如此。