6.7 KiB
Ruby에서 데이터베이스 연동 및 Active Record 사용법
웹 애플리케이션을 개발할 때 데이터베이스(Database)는 필수적인 요소다. Ruby에서는 다양한 데이터베이스와 쉽게 연동할 수 있으며, 특히 Active Record를 사용하면 객체지향적으로 데이터를 다룰 수 있다. 이번 글에서는 Ruby에서 데이터베이스를 연동하는 방법과 Active Record의 기본 개념 및 사용법을 설명한다.
1. Ruby에서 데이터베이스 연동 방법
Ruby는 다양한 데이터베이스를 지원한다. 대표적으로 SQLite, MySQL, PostgreSQL 등이 있으며, 각각의 데이터베이스를 사용하기 위해 적절한 드라이버(Gem) 를 설치해야 한다.
1.1. SQLite 사용하기
SQLite는 가벼운 파일 기반의 데이터베이스로, 별도의 서버 설정 없이 사용할 수 있어 개발 및 테스트 환경에서 많이 사용된다.
설치 및 초기 설정
SQLite를 사용하려면 sqlite3 gem을 설치해야 한다.
gem install sqlite3
데이터베이스 파일을 생성하고 연결하는 간단한 Ruby 코드:
require "sqlite3"
# SQLite 데이터베이스 파일 생성 (파일이 없다면 자동 생성)
db = SQLite3::Database.new "test.db"
# 테이블 생성
db.execute <<-SQL
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);
SQL
# 데이터 삽입
db.execute "INSERT INTO users (name, age) VALUES (?, ?)", ["홍길동", 30]
# 데이터 조회
db.execute "SELECT * FROM users" do |row|
puts row.join(", ")
end
db.close # 연결 종료
출력:
1, 홍길동, 30
SQLite는 파일 기반이므로 test.db라는 파일이 생성된다. 이후 Ruby 코드에서 해당 파일을 사용하여 데이터를 읽고 쓸 수 있다.
1.2. MySQL 사용하기
MySQL은 대규모 프로젝트에서 자주 사용되는 데이터베이스다. MySQL과 연동하려면 mysql2 gem을 설치해야 한다.
설치
gem install mysql2
MySQL 데이터베이스 연결 및 쿼리 실행
require "mysql2"
# MySQL 클라이언트 설정
client = Mysql2::Client.new(
host: "localhost",
username: "root",
password: "password",
database: "test_db"
)
# 테이블 생성
client.query <<-SQL
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
);
SQL
# 데이터 삽입
client.query("INSERT INTO users (name, age) VALUES ('이순신', 45)")
# 데이터 조회
results = client.query("SELECT * FROM users")
results.each do |row|
puts row["id"], row["name"], row["age"]
end
client.close # 연결 종료
이 방식은 SQL을 직접 실행하는 방법으로, ORM(Object-Relational Mapping) 방식보다 코드가 길어질 수 있다. 이를 간편하게 하기 위해 Active Record를 사용할 수 있다.
2. Active Record란?
Active Record는 Ruby on Rails에서 사용하는 ORM(Object-Relational Mapping) 라이브러리다. SQL을 직접 작성하지 않고도 Ruby 객체를 사용해 데이터를 조작할 수 있다.
Active Record를 사용하면 SQL 쿼리를 직접 작성할 필요 없이 객체 지향 방식으로 데이터를 다룰 수 있다.
2.1. Active Record 설치 및 설정
Active Record는 별도로 Rails 프레임워크 없이 사용할 수도 있다.
설치
gem install activerecord sqlite3
데이터베이스 연결 설정
require "active_record"
# SQLite 데이터베이스 연결
ActiveRecord::Base.establish_connection(
adapter: "sqlite3",
database: "test.db"
)
이제 Active Record를 활용하여 데이터를 다루는 방법을 살펴보자.
3. Active Record 사용법
Active Record를 사용하려면 데이터베이스 테이블에 매핑되는 모델(Model) 을 정의해야 한다.
3.1. 모델 정의하기
class User < ActiveRecord::Base
end
위 코드에서 User 클래스는 users 테이블과 연결된다. Active Record는 자동으로 클래스명을 기반으로 테이블명을 추론하므로, User 모델은 users 테이블과 매칭된다.
3.2. 테이블 생성 (마이그레이션 사용)
Active Record에서는 마이그레이션(Migration) 을 사용하여 테이블을 생성할 수 있다.
require "active_record"
ActiveRecord::Schema.define do
create_table :users, if_not_exists: true do |t|
t.string :name
t.integer :age
t.timestamps
end
end
이제 users 테이블이 생성된다.
3.3. 데이터 삽입
객체를 생성하고 .save 메서드를 호출하면 데이터베이스에 저장된다.
user = User.new(name: "강감찬", age: 40)
user.save # 데이터베이스에 저장
또는 한 줄로 작성할 수도 있다.
User.create(name: "김유신", age: 35)
3.4. 데이터 조회
users = User.all # 모든 데이터 조회
users.each do |user|
puts "#{user.id}, #{user.name}, #{user.age}"
end
특정 조건을 사용하여 데이터를 조회할 수도 있다.
user = User.find_by(name: "강감찬")
puts user.age # 강감찬의 나이 출력
3.5. 데이터 수정
user = User.find_by(name: "강감찬")
user.age = 50
user.save # 변경된 내용 저장
또는 한 줄로 작성 가능하다.
User.find_by(name: "강감찬")&.update(age: 50)
3.6. 데이터 삭제
user = User.find_by(name: "강감찬")
user.destroy # 데이터 삭제
또는 한 번에 여러 개 삭제할 수도 있다.
User.where(age: 50).destroy_all
4. 정리
Ruby에서 데이터베이스를 연동하는 방법과 Active Record를 활용하여 데이터를 다루는 방법을 살펴보았다.
📌 데이터베이스 연동 방식
sqlite3,mysql2등의 Gem을 사용하여 SQL을 직접 실행할 수 있다.- Active Record를 사용하면 ORM 방식으로 객체 지향적으로 데이터를 다룰 수 있다.
📌 Active Record 주요 기능
User.create(name: "홍길동", age: 30)→ 데이터 삽입User.all→ 모든 데이터 조회User.find_by(name: "홍길동")→ 특정 데이터 조회user.update(age: 35)→ 데이터 수정user.destroy→ 데이터 삭제
Active Record를 사용하면 SQL을 직접 작성하지 않고도 데이터를 쉽게 관리할 수 있다. Ruby로 웹 애플리케이션을 개발할 계획이라면, Active Record는 반드시 익혀야 할 핵심 기술이다!