Sequel 是一个灵活的 Ruby ORM(对象关系映射器),它允许开发者通过 Ruby 代码来操作数据库。Sequel 支持多种数据库后端,如 SQLite、MySQL 和 PostgreSQL,并且提供了丰富的功能来处理数据库查询、事务和数据迁移。
安装 Sequel
在使用 Sequel 之前,你需要先安装这个 gem。你可以通过运行以下命令来安装 Sequel:
gem install sequel
此外,为了连接到特定的数据库,你还需要安装相应的适配器 gem。例如,如果你要连接到 PostgreSQL 数据库,可以安装 pg
gem:
gem install pg
对于 MySQL 数据库,你可以安装 mysql2
gem:
gem install mysql2
对于 SQLite 数据库,Sequel 内置了支持,无需额外安装 gem。
连接到数据库
在使用 Sequel 进行数据库操作之前,需要创建一个 Sequel 的实例来连接到数据库。以下是一些常见数据库连接的例子:
SQLite 示例
require 'sequel' DB = Sequel.sqlite # 创建一个新的 SQLite 数据库 DB = Sequel.sqlite('my_database.db') # 连接到一个已存在的 SQLite 数据库
MySQL 示例
require 'sequel' DB = Sequel.mysql('database_name', user: 'username', password: 'password', host: 'localhost')
PostgreSQL 示例
require 'sequel' DB = Sequel.postgres('database_name', user: 'username', password: 'password', host: 'localhost')
定义模型
Sequel 允许你通过定义模型来映射数据库中的表。每个模型都代表一个数据库表,而类的方法则对应于该表的列和操作。
基本模型定义
class User < Sequel::Model end
这将创建一个名为 User
的模型,对应数据库中名为 users
的表(默认情况下,Sequel 会自动将模型名转换为复数形式作为表名)。
自定义表名
如果你想让模型对应一个特定的表名,可以通过 set_dataset
方法来设置:
class User < Sequel::Model set_dataset :custom_table_name end
这里,User
模型将对应数据库中的 custom_table_name
表。
数据库操作
插入数据
你可以使用 create
方法向数据库中插入新的记录:
User.create(name: 'Alice', email: 'alice@example.com')
查询数据
Sequel 提供了多种方法来查询数据库。以下是几个常见的查询示例:
查找所有记录
all_users = User.all
查找单个记录
user = User[1] # 根据主键查找
条件查询
admins = User.where(admin: true).all
更新数据
更新现有记录可以通过调用相应的方法并传递新值来实现:
user = User[1] user.update(email: 'new.email@example.com')
删除数据
删除记录可以使用 delete
方法:
user = User[1] user.delete
或者使用 destroy
方法,它不仅会从数据库中删除记录,还会触发任何相关的回调:
user = User[1] user.destroy
事务管理
Sequel 提供了强大的事务管理功能,确保数据的一致性和完整性。你可以通过以下方式开始一个事务:
DB.transaction do user = User.create(name: 'Bob') user.update(email: 'bob@example.com') end
如果在事务执行过程中发生异常,所有更改都将被回滚,从而保持数据库的一致性。
处理关联
Sequel 支持多种类型的关联,包括一对一、一对多和多对多。你可以通过 many_to_one
, one_to_many
, 和 many_to_many
方法来定义这些关联。
一对一关联
class User < Sequel::Model one_to_one :profile end class Profile < Sequel::Model many_to_one :user end
一对多关联
class User < Sequel::Model one_to_many :posts end class Post < Sequel::Model many_to_one :user end
多对多关联
class User < Sequel::Model many_to_many :groups end class Group < Sequel::Model many_to_many :users end
以上是使用 Sequel 进行基本数据库操作的一些例子。Sequel 提供了更复杂的功能,如自定义 SQL 查询、预编译语句等,使得它成为处理各种数据库任务的强大工具。希望这些内容对你有所帮助!