添加到 中的依赖项列表中:
:ecto
mix.exs
def deps do
[
{:ecto, "~> 3.8"}
]
end
Ecto是用于Elixir的数据映射和语言集成查询的工具包。下面是一个示例:
# In your config/config.exs file
config :my_app, ecto_repos: [Sample.Repo]
config :my_app, Sample.Repo,
database: "ecto_simple",
username: "postgres",
password: "postgres",
hostname: "localhost",
port: "5432"
# In your application code
defmodule Sample.Repo do
use Ecto.Repo,
otp_app: :my_app,
adapter: Ecto.Adapters.Postgres
end
defmodule Sample.Weather do
use Ecto.Schema
schema "weather" do
field :city # Defaults to type :string
field :temp_lo, :integer
field :temp_hi, :integer
field :prcp, :float, default: 0.0
end
end
defmodule Sample.App do
import Ecto.Query
alias Sample.{Weather, Repo}
def keyword_query do
query =
from w in Weather,
where: w.prcp > 0 or is_nil(w.prcp),
select: w
Repo.all(query)
end
def pipe_query do
Weather
|> where(city: "Kraków")
|> order_by(:temp_lo)
|> limit(10)
|> Repo.all
end
end
Ecto通常用于通过Ecto.Adapters.SQL(源代码)与数据库(例如Postgres和MySQL)进行交互。Ecto也通常用于将来自任何来源的数据映射到Elixir结构中,无论它们是否由数据库支持。
编程Ecto,由Darin Wilson和Eric Meadows-Jönsson编写,指导你从基础知识到高级概念
The Little Ecto Cookbook,Dashbit的免费电子书,是对现有Ecto指南的策展,其中包含一些额外的内容
你需要将 Ecto 和数据库适配器作为依赖项添加到文件中。支持的数据库及其适配器包括:
mix.exs
数据库 | 埃克托适配器 | 依赖 |
---|---|---|
PostgreSQL | Ecto.Adapters.Postgres | ecto_sql(需要 Ecto v3.0+)+ postgrex |
我的SQL | Ecto.Adapters.MyXQL | ecto_sql(需要 Ecto v3.3+)+ myxql |
MSSQL | Ecto.Adapters.Tds | ecto_sql(需要 Ecto v3.4+)+ tds |
SQLite3 | Ecto.Adapters.SQLite3 | ecto_sql(需要 Ecto v3.5+)+ ecto_sqlite3 |
断续器 | 埃索 | ecto + etso |
例如,如果你想使用PostgreSQL,请添加到你的文件中:
mix.exs
defp deps do
[
{:ecto_sql, "~> 3.0"},
{:postgrex, ">= 0.0.0"}
]
end
然后在 shell 中运行以获取依赖项。如果要使用其他数据库,只需从上表中选择适当的依赖项即可。
mix deps.get
最后,在存储库定义中,你需要指定所选依赖项的相应属性。对于PostgreSQL,它是:
adapter:
defmodule MyApp.Repo do
use Ecto.Repo,
otp_app: :my_app,
adapter: Ecto.Adapters.Postgres,
...
分支 | 支持 |
---|---|
版本3.7 | 错误修复 |
版本3.6 | 仅安全补丁 |
3.5 版 | 仅安全补丁 |
版本3.4 | 仅安全补丁 |
版本3.3 | 仅安全补丁 |
版本3.2 | 从 02/2022 起不受支持 |
版本3.1 | 从 02/2020 开始不支持 |
3.0 版 | 从 02/2020 开始不支持 |
版本2.2 | 从 02/2022 起不受支持 |
版本2.1 | 自 2018 年 10 月起不受支持 |
版本2.0 | 自 08/2017 起不受支持 |
版本1.1 | 自 03/2018 起不受支持 |
1.0 版 | 从 05/2017 起不支持 |
在3.0版本中,Ecto API已经变得稳定。我们的主要重点是提供错误修复和增量更改。
克隆存储库并获取其依赖项:
$ git clone https://github.com/elixir-ecto/ecto.git $ cd ecto $ mix deps.get $ mix test
请注意,不会运行文件夹中的测试。要运行集成测试,你可以在同级目录中进行克隆,然后使用指向 Ecto 检出的环境变量运行其集成测试:
mix test
integration_test
ecto_sql
ECTO_PATH
$ cd .. $ git clone https://github.com/elixir-ecto/ecto_sql.git $ cd ecto_sql $ mix deps.get $ ECTO_PATH=../ecto mix test.all
还可以使用 earthly 在容器化环境中运行集成测试:
$ earthly -P +all
你还可以使用它来以交互方式调试任何失败的集成测试,方法是:
$ earthly -P -i --build-arg ELIXIR_BASE=1.8.2-erlang-21.3.8.21-alpine-3.13.1 +integration-test
然后,一旦进入容器化的 shell,就可以使用相应的命令检查底层数据库:
PGPASSWORD=postgres psql -h 127.0.0.1 -U postgres -d postgres ecto_test MYSQL_PASSWORD=root mysql -h 127.0.0.1 -uroot -proot ecto_test sqlcmd -U sa -P 'some!Password'
“Ecto”和Ecto徽标版权所有(c)2020 Dashbit。
Ecto标志由Dane Wesolko设计。
版权所有 (c) 2013 Plataformatec
版权所有 (c) 2020 Dashbit
根据 Apache 许可证版本 2.0(“许可证”)进行许可;除非符合许可证,否则你不得使用此文件。你可以在 https://www.apache.org/licenses/LICENSE-2.0 处获得许可证的副本
除非适用法律要求或书面同意,否则根据许可证分发的软件将按“原样”分发,不附带任何明示或暗示的保证或条件。请参阅许可证,了解管理许可证下的权限和限制的特定语言。