2016-05-24 72 views
0

在使用Ecto時遇到此鏈接。 Elixir ecto connect to an existing DB。 模式已經在數據庫中創建,爲什麼要在這裏聲明?當使用odbc/jdbc/odac驅動程序時,我們使用Ecto.Adapters.SQL.query這樣的stmt,並且不那麼複雜和簡單。你需要使用ecto來查詢數據庫嗎?

那麼在哪裏給stmt:Ecto.Adapters.SQL.query(YourRepo,「SELECT $ 1」,[1])?
它在web/models/abc.ex? 你如何找回結果? 您能否提到一些您從Ecto獲得的使用直接SQL不能提供的好處?

+0

也有使用Erlang的ODBC庫查詢數據庫以及路徑。但我認爲@sashafonseca提出了幾個使用Ecto的好理由。 –

回答

3

請問您是否可以編輯您的問題,並提供更詳細的描述和內容?

的好處:

  • 外生提供了一個非常好的和表現語言來查詢數據庫
  • 的查詢進行消毒並防止SQL注入保護
  • 提供容易建立驗證,以保證插入的數據服從你想要的規則
  • 使得它更容易在Elixir中直接處理數據
  • 處理數據庫連接並允許產生更多的工人作爲n eeded
+0

感謝您的回答。由於模式已經在數據庫中創建,因此可以使用Ecto.Adapters.SQL.query()直接使用結構化查詢語言來獲取數據。 – user1064227

+0

是的,但通過Ecto有更簡單的方法。我建議閱讀一些指南或編程鳳凰書籍,以更好地理解和看看Ecto是多麼容易和有用。 –

+0

感謝您的答案。只要學習藥劑。由於架構已經在數據庫中創建,我認爲您可以直接使用結構化查詢語言(在此使用Ecto.Adapters.SQL.query())來獲取數據。或者使用存儲過程。使用綁定變量來防止SQL注入。要進行驗證,請使用客戶端和服務器端。也許Ecto在處理獲取的數據(?)和產生更多的工作人員方面可能很有用。你能解釋一下Ecto如何更容易直接處理數據嗎?連接池怎麼樣?您是否使用Ecto創建連接池? – user1064227

3

聽起來像Ecto可能不適合您嘗試使用它。 Ecto非常適合新項目,您可以從頭開始使用遷移,並隨時在系統中構建架構。爲了連接到一個現有的數據庫,當你嘗試重新映射所有現有的項目時,它會變得乏味。

幸運的是,如果它不符合您的需求,您就不會被綁定到Ecto。您可能想嘗試像Moebius這樣的嘗試,因爲它似乎採用了您正在尋找的方法。

莫比烏斯不是一個ORM。沒有映射,沒有模式,沒有遷移;只有查詢和數據。我們儘可能地接受PostgreSQL,表達善意,讓你成爲英雄。

https://github.com/robconery/moebius

相關問題