SQLAlchemy中与数据库无关的to_char函数
问题描述:
我正在使用SQLAlchemy创建与数据库无关的查询。SQLAlchemy中与数据库无关的to_char函数
我面临着to_char
函数的一个问题。
考虑简单的查询,如:
select to_char(id,'999') from xyz
它的工作对Postgres的,但MySQL不支持它。
如何使用SQLAlchemy使此查询与数据库无关?
答
你在MySQL中寻找format
:
select format(id, '999') from xyz
回答您的所有功能于一身的问题:有没有跨数据库的方式来做到这一点。每个RDBMS都非常不同,并且在相当简单的查询之后没有真正的标准化。字符串操作尤其如此。
答
使用CAST函数进行简单类型转换。它是SQL标准,SQLAlchemy通过cast()函数直接支持它:http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/expressions.html?highlight=cast#sqlalchemy.sql.expression.cast。
对于日期值,SQLA具有一个生成SQL EXTRACT函数的extract()函数 - 翻译层将通用字段名像“month”,“day”,“minute”等转换为适合后端的关键字正在使用。
答
使用CAST功能,例如
cast(numberfield as char)
我同意..到u ..我读了一些在那里,使用SQLAlchemy的,我们可以过来的差别。我尝试,但未能:( – asb 2009-08-04 12:28:17
@asb:你必须检查你呼叫前正在使用的RDBMS,遗憾的是这要么是函数本身,或者只是使用不同的功能与不同的引擎。 – Eric 2009-08-04 12:47:19