ภาคต่อคืออะไร
ผลสืบเนื่องคืออัญมณีที่ให้คุณเข้าถึงฐานข้อมูลของคุณโดยไม่จำเป็นต้องใช้ 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
ตอนนี้ถึงตาคุณแล้วที่จะลองและสนุกไปกับมัน!
ขอบคุณสำหรับการอ่าน