或在 flask_SQLAlchemy 查询

or query in flask_SQLAlchemy

我正在移植我使用 mysql 库查询 mysql 的旧代码。我很想使用 flask_SQLALchemy 来做同样的事情,但无法找到查询 'or'.

的替代选项

下面是有关其工作原理的更新代码片段。

from flask_sqlalchemy import SQLAlchemy                                                                                                                                                        
from myapp import APP                                                                                                                                                                          
from myapp.models.nodes import Host                                                                                                                                                            


DB = SQLAlchemy(APP)  
# config is taken care here                                                                                                                                                                         

APP.app_context().push()                                                                                                                                                                       
with APP.app_context():                                                                                                                                                                        
    DB.init_app(APP)     

Hostname_var = "some hostname"
session_query = Host.query.filter_by(hostname=hostname_var).first()

同样,我想查询下面给出的语句。我可以使用 sqlalchemy,但使用不同的库听起来不太理想。

"Select count(*) as c from table_name where ver='some version' and arch='some arch' and pool=1 and (state='Ready' or state='Provisioning');" table_name 的 class 称为主机(如示例中所用)。

感谢任何帮助,谢谢。

您需要使用|&,例如:

Host.query.filter(
    (Host.ver == 'some version') & (Host.arch == 'some arch') & (Host.pool == 1) &
    ((Host.state == 'Ready') | (Host.state == 'Provisioning'))
).count()

会给你想要的结果。