상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Elixir에서 데이터베이스와의 연결은 어떻게 하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Elixir에서 데이터베이스와의 연결은 주로 Ecto라는 라이브러리를 통해 이루어집니다. Ecto는 Elixir의 데이터베이스 상호작용을 위한 DSL(Domain Specific Language)로, 데이터베이스 쿼리, 스키마 정의, <a href='https://sangseek.com/sangseeks/마이그레이션/ko'>마이그레이션</a> 등을 쉽게 처리할 수 있도록 도와줍니다. Ecto는 다양한 데이터베이스를 지원하며, PostgreSQL, MySQL, SQLite 등과 함께 사용할 수 있습니다. 1. Ecto 설치 Ecto를 사용하기 위해서는 먼저 프로젝트에 Ecto와 데이터베이스 어댑터를 추가해야 합니다. 예를 들어, PostgreSQL을 사용할 경우 `mix.exs` 파일에 다음과 같이 의존성을 추가합니다. ```elixir defp deps do [ {:ecto_sql, "~> 3.6"}, {:postgrex, ">= 0.0.0"} ] end ``` 이후, 의존성을 설치하기 위해 터미널에서 다음 명령어를 실행합니다. ```bash mix deps.get ``` 2. Repo 설정 Ecto를 사용하기 위해서는 `Repo` 모듈을 정의해야 합니다. `Repo`는 데이터베이스와의 연결을 관리하는 역할을 합니다. 다음과 같이 `lib/my_app/repo.ex` 파일을 생성하고 내용을 작성합니다. ```elixir defmodule MyApp.Repo do use Ecto.Repo, otp_app: :my_app, adapter: Ecto.Adapters.Postgres end ``` 3. Config 설정 `config/config.exs` 파일에 데이터베이스 <a href='https://sangseek.com/sangseeks/연결 정보/ko'>연결 정보</a>를 추가합니다. PostgreSQL을 사용하는 경우 다음과 같이 설정할 수 있습니다. ```elixir config :my_app, MyApp.Repo, username: "postgres", password: "postgres", database: "my_app_dev", hostname: "localhost", pool_size: 10 ``` 4. Ecto 마이그레이션 Ecto를 사용하여 데이터베이스 스키마를 정의하고 마이그레이션을 수행할 수 있습니다. 먼저, 스키마를 정의하기 위해 새로운 마이그레이션 파일을 생성합니다. ```bash mix ecto.gen.migration create_users ``` 이 명령어는 `priv/repo/migrations` 디렉토리에 새로운 마이그레이션 파일을 생성합니다. 생성된 파일을 열고 다음과 같이 테이블을 정의합니다. ```elixir defmodule MyApp.Repo.Migrations.CreateUsers do use Ecto.Migration def change do create table(:users) do add :name, :string add :email, :string timestamps() end end end ``` 마이그레이션을 실행하여 데이터베이스에 테이블을 생성합니다. ```bash mix ecto.migrate ``` 5. 데이터베이스 작업 이제 Ecto를 사용하여 데이터베이스에 데이터를 삽입하거나 쿼리할 수 있습니다. 먼저, 스키마를 정의합니다. `lib/my_app/user.ex` 파일을 생성하고 다음과 같이 작성합니다. ```elixir defmodule MyApp.User do use <a href='https://sangseek.com/sangseeks/Ecto.Schema/ko'>Ecto.Schema</a> import Ecto.<a href='https://sangseek.com/sangseeks/Changeset/ko'>Changeset</a> schema "users" do field :name, :string field :email, :string timestamps() end def changeset(user, attrs) do user |> cast(attrs, [:name, :email]) |> validate_required([:name, :email]) end end ``` 이제 사용자를 생성하고 데이터베이스에 저장할 수 있습니다. ```elixir attrs = %{name: "John Doe", email: "john@example.com"} changeset = MyApp.User.changeset(%MyApp.User{}, attrs) case MyApp.Repo.insert(changeset) do {:ok, user} -> IO.puts("User created: {user.name}") {:error, changeset} -> IO.inspect(changeset.errors) end ``` 6. 데이터 쿼리 Ecto를 사용하여 데이터를 쿼리할 수도 있습니다. 예를 들어, 모든 사용자를 가져오는 쿼리는 다음과 같습니다. ```elixir users = MyApp.Repo.all(MyApp.User) ``` 특정 조건에 맞는 사용자만 가져오고 싶다면 `where`를 사용할 수 있습니다. ```elixir user = MyApp.Repo.get_by(MyApp.User, email: "john@example.com") ``` 7. 결론 Elixir에서 데이터베이스와의 연결은 Ecto를 통해 간편하게 처리할 수 있습니다. Ecto는 데이터베이스와의 상호작용을 위한 강력한 도구로, 스키마 정의, 마이그레이션, 데이터 삽입 및 쿼리 등을 쉽게 수행할 수 있도록 도와줍니다. Ecto를 활용하면 Elixir <a href='https://sangseek.com/sangseeks/애플/ko'>애플</a>리케이션에서 데이터베이스 작업을 효율적으로 관리할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기