第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Flask SQL Alchemy 使用 != 列條件查詢表

Flask SQL Alchemy 使用 != 列條件查詢表

蝴蝶刀刀 2022-12-14 21:06:41
我有一個(gè)many to many表,正在嘗試運(yùn)行 2 個(gè)查詢,將其中一個(gè)表分成兩個(gè)列表 - 那些have an item和those that don't.我有一個(gè)名為的表items和一個(gè)名為lists多對(duì)多關(guān)系的表。下面顯示的函數(shù)是項(xiàng)目模型類的一部分。當(dāng)一個(gè)項(xiàng)目 id 被傳遞到函數(shù)中時(shí),它檢查所有記錄的關(guān)聯(lián)表,然后過濾它自己的值。我編寫了一個(gè)測(cè)試函數(shù),它創(chuàng)建了 4 個(gè)列表并向其中兩個(gè)列表添加了 1 個(gè)項(xiàng)目。然后測(cè)試調(diào)用這兩個(gè)函數(shù)。第一個(gè)函數(shù)正確返回它添加到的 2 個(gè)列表。第二個(gè)測(cè)試錯(cuò)誤地返回所有 4 個(gè)列表。這兩個(gè)函數(shù)之間的唯一區(qū)別是==vs !=。這意味著我的非平等條件沒有觸發(fā)。Flask搭配使用Flask-SQLAlchemy第一個(gè)查詢檢查equality按預(yù)期工作,但not equal查詢根本不起作用。我已經(jīng)嘗試過 SQLAlchemy 文檔,嘗試過使用!=, not_,is not但沒有任何運(yùn)氣。谷歌搜索也不會(huì)產(chǎn)生任何有用的結(jié)果。在 SQLITE3 中這是有效的,這正是我試圖用 flask-SQLAlchemy 完成的:select * from Listleft join items_listson items_lists.list_id = List.idWHERE items_lists.item_id is not item.id;這是我的代碼,在此先感謝您的指導(dǎo)。def in_list(self):        return List.query.join(            items_lists, (items_lists.c.list_id == list.id)            ).filter(               items_lists.c.item_id == self.id               )     def not_in_list(self):        return List.query.join(            items_lists, (items_lists.c.list_id == list.id)            ).filter(                items_lists.c.item_id != self.id                )我正在使用 Python 的 unittest 進(jìn)行測(cè)試 - 這是檢查條件的代碼。測(cè)試失敗self.assertEqual(nm1, [l2, l4])而不是看到[l2, l4]結(jié)果,我得到[l1,l2,l3,l4]- 根據(jù)測(cè)試條件,item1 -i1在列表中 -[l1, l3]所以第二個(gè)查詢條件不起作用。其他不起作用的東西:.filter(   items_lists.c.list_id == not_(self.id)) .filter(   items_lists.c.list_id == ~self.id) 這將返回一個(gè)空列表,而不是讓 item 不是成員的兩個(gè)列表。
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊

我能夠通過更改 not_in_lists 函數(shù)來調(diào)整代碼如下。


def not_in_lists(self):

        query = List.query.filter(

            List.id.notin_(

                db.session.query(items_lists.c.list_id).filter(

                    items_lists.c.item_id == self.id)))

        list = []

        for i in query:

            list.append(i)


        return list


查看完整回答
反對(duì) 回復(fù) 2022-12-14
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

not_in_list函數(shù)替換為以下函數(shù)。

def not_in_list(self):
        return List.query.filter(List.id.notin_(session.query(item_lists.c.list_id).filter(item_lists.c.item_id == self.id)))

它不起作用,因?yàn)楫?dāng)您在查詢中說時(shí)!= self.id,它意味著等于其他所有內(nèi)容,包括第 3 項(xiàng)i3。但是i3鏈接到所有列表。因此它會(huì)將所有列表返回給您。


查看完整回答
反對(duì) 回復(fù) 2022-12-14
  • 2 回答
  • 0 關(guān)注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)