Postgresql

將 python 列表傳遞給 plpy 執行 in 運算符,無需字元串插值

  • October 14, 2021

我有一個 ‘in’ where 子句的 plpython 查詢

   user_ids = [1,2,3]
   query = "SELECT department from users where id in ($1)" 
   prepared_query = plpy.prepare(query, ['bigint'])
       # not sure what the type should be if id is bigint
   plpy.execute(prepared_query, user_ids)

問題是我不確定參數類型應該是什麼

我嘗試過的不同組合出現錯誤:

  • 使用上述語法時,由於列表中的逗號而引發錯誤
  • 使用 bigint 時$$ $$我得到了 no 運算符 bigint = bigint$$ $$.
  • 我嘗試使用 “,",join() 傳入逗號分隔的字元串
  • 我也將列表轉換為元組,但這不起作用

有沒有人讓這個工作?它的記錄很差。

如果其他人有這個問題,我設法通過將 where 子句切換到where id = ANY($1)bigint[]用作參數類型來解決這個問題

引用自:https://dba.stackexchange.com/questions/301112