【发布时间】:2017-03-14 21:05:29
【问题描述】:
所以我正在使用 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)
当我将鼠标悬停在“|”上时运算符我得到 "Class'(bool,bool)' 没有定义 'or',所以 '|'运算符不能在其实例上使用”
在编译期间我得到 “sqlalchemy.exc.ArgumentError:需要 SQL 表达式对象或字符串,而是得到类型的对象”我做错了什么?
【问题讨论】:
-
你试过
or吗? -
当我使用 'or' 时,我得到的错误是:“sqlalchemy.exc.ArgumentError: SQL expression object or string expected, got object of type
instead” -
or期望两边都有一个布尔值。你正在做(bool, bool) or (bool, bool)。尝试将其更改为(bool and bool) or (bool and bool) -
好的,代码在更改之后开始编译,但是我打印了这个查询,我可以看到在这个查询中,最后一个过滤器没有任何内容,就像这条线不存在“WHERE studia. nazwa = %(nazwa_1)s AND grupa.nr_semestru = %(nr_semestru_1)s AND grupa.rodzaj = %(rodzaj_1)s" 这就是查询的结束方式。
标签: python sqlalchemy