Computer >> Máy Tính >  >> Lập trình >> Ruby

Cách sử dụng Ruby Sequel Gem (Có ví dụ)

Phần tiếp theo là gì?

Sequel là một viên ngọc quý cho phép bạn truy cập cơ sở dữ liệu của mình, không cần Rails.

Bạn có thể kết nối với cơ sở dữ liệu của mình theo nhiều cách khác nhau.

Chủ yếu là hai :

  • Bằng cách gửi các lệnh SQL thô
  • Bằng cách sử dụng ORM

Dưới đây là một ví dụ, sử dụng SQL thô và cơ sở dữ liệu MySQL.

require 'mysql2'

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

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

Kết quả?

Một mảng các hàm băm với dữ liệu.

Bây giờ :

Nếu chúng ta muốn làm việc với dữ liệu theo hướng Đối tượng, chúng ta sẽ cần phải biến các kết quả thành các đối tượng.

Đó là một phần quan trọng trong những gì ORM thực hiện.

ORM là gì?

ORM là viết tắt của “Object-Relational-Mapping”.

Phần tiếp theo, được đặt tên theo cách phát âm của SQL (ngôn ngữ truy vấn cho cơ sở dữ liệu), là ORM.

Hãy khám phá cách sử dụng nó!

Ví dụ phần tiếp theo:Kết nối với cơ sở dữ liệu

Bước đầu tiên để bắt đầu sử dụng Sequel là kết nối với cơ sở dữ liệu.

Đây là một ví dụ :

require 'sequel'

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

Điều này tạo ra một Sequel::Database đối tượng &gán nó cho DB .

Chúng tôi đang sử dụng cơ sở dữ liệu SQLite3 tại đây.

Nhưng bạn có thể sử dụng những người khác :

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

Tiếp theo là gì?

Bạn cần tạo một bảng để lưu trữ dữ liệu.

Đây là cách tạo nó :

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

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

Có một hệ thống di chuyển mà bạn có thể sử dụng.

Nhưng đó là tùy chọn .

Bây giờ chúng tôi đã sẵn sàng để bắt đầu thêm dữ liệu và truy vấn cơ sở dữ liệu!

Cách sử dụng tập dữ liệu phần tiếp theo

Bạn cần một đối tượng tập dữ liệu để tương tác với một bảng cụ thể trên cơ sở dữ liệu.

Đây là cách để có được một :

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

Tuyệt vời!

Bây giờ chúng ta có thể thêm một vài bản ghi bằng insert phương pháp.

Như thế này :

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

Hãy đếm :

table.count
# 3

Hãy lấy tất cả các mục nhập trong tập dữ liệu :

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

Này!

Điều này trông giống như một mảng các hàm băm.

Chà, bạn nói đúng.

Đó chính xác là những gì đây là.

Sequel cho phép bạn truy vấn cơ sở dữ liệu mà không cần mô hình.

Nhưng chúng tôi có thể sử dụng các mô hình .

Đây là cách…

Cách sử dụng mô hình trong phần tiếp theo

Một Sequel mô hình trông rất giống một ActiveRecord mô hình.

Đây là một ví dụ :

class Fruit < Sequel::Model
end

Mô hình hoạt động chính xác giống như một tập dữ liệu, nhưng chúng bao bọc các kết quả trong lớp mô hình.

Hãy xem :

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

Chúng ta có thể sử dụng cùng một Sequel::Dataset phương pháp.

Vì vậy, không có "ma thuật" nào ở đây.

Một vài ví dụ khác :

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

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

Fruit.first[:amount]
# 10

Rất tốt!

Phần tiếp theo so với ActiveRecord

Bây giờ bạn đã biết Sequel tuyệt vời như thế nào là, bạn có thể tự hỏi nó như thế nào so với ActiveRecord .

Chà, ActiveRecord là ORM mặc định cho Rails.

Và Rails thực sự thích các quy ước.

Vì vậy, tôi nghĩ không nên thử thay thế ActiveRecord với Sequel trong ứng dụng Rails.

Tuy nhiên.

Nếu bạn đang sử dụng một khung công tác khác, chẳng hạn như Sinatra, thì Sequel là một sự lựa chọn tuyệt vời!

Tóm tắt

Bạn đã học về cách làm việc với cơ sở dữ liệu trong Ruby bằng ORM, trong trường hợp này là viên ngọc Sequel Ruby.

Bây giờ đến lượt bạn thử và vui chơi!

Cảm ơn vì đã đọc.