所以我用sqlalchemy创建一个查询,我不知道为什么会出现这个错误。基本上我的代码看起来像这样:
def post(self, semestr):
nazwa_kierunku = 'stac. I st., kier. informatyka'
nr_semestru = 2
nr_grupy_cw = 3
nr_grupy_ps = 5
nr_grupy_l = 7
nr_grupy_w = 1
nr_grupy_p = 2
nr_grupy_s = 5
nr_grupy_j = 5
nr_grupy_wf = 1
prowadzacy_tytul_subq = model.Prowadzacy.query.join(model.Tytul).subquery()
query = (
model.Grupa.query.join(prowadzacy_tytul_subq,
model.Studia,
model.Przedmiot,
model.Sala)
.filter(model.Studia.nazwa == nazwa_kierunku)
.filter(model.Grupa.nr_semestru == nr_semestru)
.filter((model.Grupa.rodzaj == 'Ćw', model.Grupa.nr_grupy == nr_grupy_cw) | (model.Grupa.rodzaj == 'Ps' , model.Grupa.nr_grupy == nr_grupy_ps))
)
print(query)
result = schema.GrupaSchema().dump(query, many=True)
return jsonify(result)
当我鼠标悬停在'|'上时运算符我得到“类”(bool,bool)'没有定义'或',所以'|'运算符不能在其实例上使用“
在编译期间,我得到了 “sqlalchemy.exc.ArgumentError:预期的SQL表达式对象或字符串,而不是类型的对象”我做错了什么?
答案 0 :(得分:0)
在sqlalchemy
库中,您应该使用条件作为参数的or_()
。
并验证condition_1
和condition_2
是bool
个对象。而不是你提到的class(bool, bool)
。
例如:
from sqlalchemy import or_, and_
select().where( or_(condition_1, condition_2) )