Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีใช้ Ruby Sequel Gem (พร้อมตัวอย่าง)

ภาคต่อคืออะไร

ผลสืบเนื่องคืออัญมณีที่ให้คุณเข้าถึงฐานข้อมูลของคุณโดยไม่จำเป็นต้องใช้ Rails

คุณสามารถเชื่อมต่อกับฐานข้อมูลของคุณได้หลายวิธี

ส่วนใหญ่สอง :

  • โดยการส่งคำสั่ง 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

ดีมาก!

ภาคต่อ vs ActiveRecord

ตอนนี้คุณได้เรียนรู้ว่า Sequel . ที่ยอดเยี่ยมเพียงใด คือ คุณอาจสงสัยว่ามันเปรียบเทียบกับ ActiveRecord . ได้อย่างไร .

เอาล่ะ ActiveRecord เป็น ORM เริ่มต้นสำหรับ Rails

และ Rails จริงๆ ชอบแบบแผน

ดังนั้นฉันไม่คิดว่ามันคุ้มค่าที่จะลองแทนที่ ActiveRecord กับ Sequel ในแอป Rails

อย่างไรก็ตาม

หากคุณกำลังใช้เฟรมเวิร์กอื่น เช่น Sinatra ก็ Sequel เป็นทางเลือกที่ดี!

สรุป

คุณได้เรียนรู้เกี่ยวกับการทำงานกับฐานข้อมูลใน Ruby โดยใช้ ORM ในกรณีนี้คือ Sequel Ruby gem

ตอนนี้ถึงตาคุณแล้วที่จะลองและสนุกไปกับมัน!

ขอบคุณสำหรับการอ่าน