与'|'的奇怪sqlalchemy错误操作者

时间:2017-03-14 12:05:23

标签: python sqlalchemy

所以我用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表达式对象或字符串,而不是类型的对象”我做错了什么?

1 个答案:

答案 0 :(得分:0)

sqlalchemy库中,您应该使用条件作为参数的or_()

并验证condition_1condition_2bool个对象。而不是你提到的class(bool, bool)

例如:

from sqlalchemy import or_, and_
select().where( or_(condition_1, condition_2) )