Python 是否有一种使用SQLAlchemy的独立于数据库的方式来查询过滤为;无”/&引用;南;?

Python 是否有一种使用SQLAlchemy的独立于数据库的方式来查询过滤为;无”/&引用;南;?,python,sqlite,postgresql,sqlalchemy,Python,Sqlite,Postgresql,Sqlalchemy,以下代码特定于数据库: import sqlalchemy # ... ergebnis = session.query( my_object.attr1).filter(sa.and_( my_object.attr2 != 'NaN')).all() # PostgreSQL """ my_object.attr2 != None)).all() # sQLite """ 对于PostgreSQL,它是“NaN”,而S

以下代码特定于数据库:

import sqlalchemy
# ...
ergebnis = session.query(
    my_object.attr1).filter(sa.and_(
        my_object.attr2 != 'NaN')).all() # PostgreSQL
        """
        my_object.attr2 != None)).all() # sQLite
        """

对于PostgreSQL,它是“NaN”,而SQLite是“None”(不带单引号)。有没有一种SQLAlchemy方法可以独立完成这项后端任务?

如果您想与
'NaN'
(“不是数字”)float值进行比较,那么对float执行显式转换:
float('NaN')
。在这种情况下,SQLAlchemy应该进行相同的转换。

如果要与
'NaN'
(“非数字”)float值进行比较,则对float执行显式转换:
float('NaN')
。在这种情况下,SQLAlchemy应该进行同样的转换。

'NaN'
在PostgreSQL中只是一个普通的字符串文字,没有“特殊”的含义(至少在普通SQL中不是这样-不知道SQLAlchemy是否有魔力)。什么数据类型是属性2?。我猜您想检查
NULL
(但不带引号)attr2是否为float。问题似乎在于,如果PostgreSQL返回NULL,SQLAlchemy提供“NaN”字符串;如果SQLite返回NULL,则提供None字符串。另外,PostgreSQL或SQLite如何返回NULL(作为字符串或非类型)应该由SQLAlchemy处理,而不是传递给用户。
'NaN'
在PostgreSQL中只是一个普通的字符串文字,没有“特殊”的含义(至少在普通SQL中不是这样-不知道SQLAlchemy是否对其有魔力)。什么数据类型是属性2?。我猜您想检查
NULL
(但不带引号)attr2是否为float。问题似乎在于,如果PostgreSQL返回NULL,SQLAlchemy提供“NaN”字符串;如果SQLite返回NULL,则提供None字符串。PostgreSQL或SQLite如何返回NULL(作为字符串或非类型)应由SQLAlchemy处理,而不是传递给user.Python/SQLAlchemy
model.column!=浮点(“NaN”)
将变成Postgresql
列!=nan
并且不工作。错误是
列“nan”不存在
,显然。Python/SQLAlchemy
model.column!=浮点(“NaN”)
将变成Postgresql
列!=nan
并且不工作。错误是,
列“nan”显然不存在。