Elixir ecto connect to an existing DB

老子叫甜甜 提交于 2020-01-13 13:04:13

问题


After doing some research in the link below

https://github.com/elixir-lang/ecto/tree/master/examples/simple

I am a little confused about how to use ecto in elixir.

There is always a schema declared like

defmodule Weather do
  use Ecto.Model

  schema "weather" do
    field :city, :string
    field :temp_lo, :integer
    field :temp_hi, :integer
    field :prcp, :float, default: 0.0
    timestamps
  end
end

and then in the 'Query' part

 def sample_query do
   query = from w in Weather,
      where: w.prcp > 0.0 or is_nil(w.prcp),
      select: w
   Simple.Repo.all(query)
   end
 end

ecto gona form a query using the schema declared in Weather

My question is that I just want to connect to an existing database 'TESTDB' and doing some SELECT, I don't need any new schmema to do my work. Is it possible to do it in ecto please?

When I create my own query like

query = from w in tenant

after I input the command $ mix do deps.get, compile

the error tells me function tenant/0 undefined

tenant is not function, it just a table in TESTDB that I didn't declare anywhere

I think I just lost myself in ecto


回答1:


You need to declare the schema for your table whether you create it using Ecto or not. I don't think there's currently an option to do this automatically. So for example you can have something like:

defmodule Tenant do
  use Ecto.Model

  schema "tenant" do
    field :id, :integer
    field :name, :string
    # and so on depending on the columns in your table
  end
end

And then do query = from w in Tenant, select: w




回答2:


You can query any table in the database by passing a string:

from p in "posts", where: p.id > 0

In such cases, you don't need to define any schema, you can just query the table directly. Finally, you can also do a SQL query directly:

Ecto.Adapters.SQL.query(YourRepo, "SELECT $1", [1])

But then you lose most of the benefits Ecto gives you.



来源:https://stackoverflow.com/questions/30163965/elixir-ecto-connect-to-an-existing-db

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!