Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby Sequel Gem 사용 방법(예제 포함)

속편이란 무엇입니까?

Sequel은 Rails가 필요 없이 데이터베이스에 액세스할 수 있는 보석입니다.

다양한 방법으로 데이터베이스에 연결할 수 있습니다.

대부분 2개 :

  • 원시 SQL 명령 전송
  • ORM을 사용하여

다음은 원시 SQL 및 MySQL 데이터베이스를 사용한 예입니다.

require 'mysql2'

client  = Mysql2::Client.new(host: "localhost")

results = client.query("SELECT * FROM users WHERE age > 21")

결과는?

데이터가 포함된 해시 배열입니다.

지금 :

객체 지향 방식으로 데이터를 사용하려면 결과를 객체로 만들어야 합니다.

이는 ORM이 하는 일의 큰 부분입니다.

ORM이란 무엇입니까?

ORM은 "Object-Relational-Mapping"의 약자입니다.

SQL의 발음을 따서 명명된 속편 (데이터베이스용 쿼리 언어)는 ORM입니다.

사용법을 알아봅시다!

속편 예:데이터베이스에 연결

Sequel 사용을 시작하는 첫 번째 단계는 데이터베이스에 연결하는 것입니다.

예시 :

require 'sequel'

DB = Sequel.sqlite('/tmp/testing.db')

이것은 Sequel::Database를 생성합니다. 개체 및 DB에 할당 .

여기서는 SQLite3 데이터베이스를 사용하고 있습니다.

하지만 다른 사람을 사용할 수 있습니다. :

  • Sequel.postgres
  • Sequel.mysql2
  • Sequel.oracle

다음은 무엇인가요?

데이터를 저장할 테이블을 생성해야 합니다.

만드는 방법은 다음과 같습니다. :

unless DB.table_exists?(:fruits)
  DB.create_table :fruits do
    primary_key :id

    column :name, String
    column :amount, Integer
  end
end

사용할 수 있는 마이그레이션 시스템이 있습니다.

하지만 선택사항입니다. .

이제 데이터 추가 및 데이터베이스 쿼리를 시작할 준비가 되었습니다!

시퀀스 데이터세트를 사용하는 방법

데이터베이스의 특정 테이블과 상호 작용하려면 데이터 세트 개체가 필요합니다.

얻는 방법은 다음과 같습니다. :

table = DB[:fruits]
# Sequel::SQLite::Dataset

훌륭합니다!

이제 insert로 몇 개의 레코드를 추가할 수 있습니다. 방법.

좋아요 :

table.insert(name: "Orange", amount: 10)
table.insert(name: "Apple", amount: 2)
table.insert(name: "Banana", amount: 7)

계산하자 :

table.count
# 3

데이터세트의 모든 항목을 가져오자 :

table.all
# [
#   { id: 1, name: "Orange", amount: 10 },
#   { id: 2, name: "Apple", amount: 2 },
#   { id: 3, name: "Banana", amount: 7 }
# ]

헤이!

이것은 해시 배열처럼 보입니다.

네 말이 맞아요.

바로 이것이다.

Sequel 모델 없이 데이터베이스를 쿼리할 수 있습니다.

하지만 모델을 사용할 수 있습니다 .

방법은...

속편에서 모델을 사용하는 방법

Sequel 모델은 ActiveRecord와 매우 유사합니다. 모델.

예시 :

class Fruit < Sequel::Model
end

모델은 데이터 세트와 똑같이 작동하지만 결과를 모델 클래스로 래핑합니다.

살펴보기 :

Fruit.first
# Fruit @values={:id=>1, :name=>"Orange", :amount=>10}

동일한 Sequel::Dataset를 사용할 수 있습니다. 방법.

따라서 여기에는 "마법"이 없습니다.

몇 가지 추가 예 :

Fruit.map(:name)
# ["Orange", "Apple", "Banana"]

Fruit.where(name: "Apple").or(amount: 10).map(:name)
# ["Orange", "Apple"]

Fruit.first[:amount]
# 10

아주 좋아요!

시퀄 대 ActiveRecord

이제 Sequel이 얼마나 멋진지 배웠습니다. 즉, ActiveRecord와 어떻게 비교되는지 궁금할 것입니다. .

음, ActiveRecord Rails의 기본 ORM입니다.

그리고 Rails는 정말 관습을 좋아합니다.

따라서 ActiveRecord를 대체할 가치가 없다고 생각합니다. Sequel 포함 Rails 앱에서.

그러나.

Sinatra와 같은 다른 프레임워크를 사용하는 경우 Sequel 탁월한 선택입니다!

요약

ORM(이 경우 Sequel Ruby gem)을 사용하여 Ruby에서 데이터베이스 작업에 대해 배웠습니다.

이제 당신이 이것을 시도하고 즐길 차례입니다!

읽어주셔서 감사합니다.