亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我生成的 WHERE 子句不正確?

為什么我生成的 WHERE 子句不正確?

慕雪6442864 2023-03-16 09:37:26
我在 SQLAlchemy 中編寫了以下查詢:session.query(matches_atp).filter(matches_atp.ID_M == 668)WHERE當我檢查它時,我得到一個奇怪的條款:WHERE belgarath.matches_atp.`ID_M` = %(ID_M_1)s當我切換到:session.query(matches_atp).filter(matches_atp.ID_M == None)然后一切看起來都很好:WHERE belgarath.matches_atp.`ID_M` IS NULL為什么我得到的%(ID_M_1)s不是668?如果這不是一個簡單的答案,那么我將發布 MRE 的代碼。
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

那是一個占位符。然后,您的數據庫驅動程序將在執行時將其替換為正確的值。換句話說,它符合預期。您也應該在手動“原始”查詢中使用占位符,而不是使用格式化等將值內聯到字符串,這是注入和容易出錯的。例如:


from sqlalchemy import text


# Wrap with text() in order to be able to use named placeholder style no

# matter which driver is in use underneath SQLA.

stmt = text("SELECT * FROM foo WHERE bar = :bar")

engine.execute(stmt, {"bar": 1})

SQLAlchemy 在生成而不是 的== None查詢編譯器中有一個例外,這很少(如果有的話)有意義。IS NULL= NULL


查看完整回答
反對 回復 2023-03-16
  • 1 回答
  • 0 關注
  • 65 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號