或在flask_SQLAlchemy中查询

时间:2018-11-20 14:50:19

标签: python flask sqlalchemy flask-sqlalchemy mysql-python

我要将我的旧代码移植到使用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,但使用不同的库听起来并不理想。

"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的类称为Host(在示例中使用)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您需要使用|&,例如:

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

会给您想要的结果。