Python 或在炼金术中查询

Python 或在炼金术中查询,python,flask,sqlalchemy,flask-sqlalchemy,mysql-python,Python,Flask,Sqlalchemy,Flask Sqlalchemy,Mysql Python,我将我的旧代码移植到使用mysql库查询mysql的地方。我正在使用flask_SQLALchemy做同样的事情,但是找不到查询“或”的替代选项 下面是更新代码的一个片段,介绍了它的工作原理 from flask_sqlalchemy import SQLAlchemy

我将我的旧代码移植到使用mysql库查询mysql的地方。我正在使用flask_SQLALchemy做同样的事情,但是找不到查询“或”的替代选项

下面是更新代码的一个片段,介绍了它的工作原理

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,但使用不同的库听起来并不理想

“从表_name中选择count(*)作为c,其中ver='some version'和arch='some arch'以及pool=1和(state='Ready'或state='Provisioning');”
表_name的类称为Host(如示例中所用)


感谢您的帮助。

您需要使用
|
&
,例如:

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

会给你想要的结果。

哇,我真的记得试过这个。谢谢。它起作用了