This topic describes how to use Sequel to connect to OceanBase Cloud and perform basic operations such as creating tables, inserting data, and querying data.
Prerequisites
- You have installed Ruby and RubyGems.
- You have registered an OceanBase Cloud account and created an instance and a MySQL compatible tenant. For more information, see Create an instance and Create a tenant.
Procedure
- Check the versions of Ruby and RubyGems.
- Install the required gem.
- Obtain the connection information of OceanBase Cloud.
- Create a sample program.
- Run the sample program.
Step 1: Check the versions of Ruby and RubyGems
Run the following command in the terminal to check the versions of Ruby and RubyGems:
ruby -v
gem -v
Step 2: Install the required gem
Run the following command to install Sequel and mysql2:
gem install sequel mysql2
Step 3: Obtain the connection information of OceanBase Cloud
Log in to the OceanBase Cloud console. In the instance list, expand the information of the target instance, and select Connect > Get Connection String under the target tenant.
For more information, see Obtain the connection string.
Fill in the corresponding information in the URL below based on the created OceanBase Cloud database.
mysql -h$host -P$port -u$user_name -p$password -D$database_nameParameter description:
$host: the endpoint of the OceanBase Cloud database, for example,t********.********.oceanbase.cloud.$port: the port of the OceanBase Cloud database. The default value is 3306.$database_name: the name of the database to be accessed.$user_name: the account for accessing the database.$password: the password of the account.
Step 4: Create a sample program
Create a configuration file named
config.rb:PASSWORD = ENV['OB_PASSWORD'] || 'your_password' CLIENT_CONFIG = { adapter: 'mysql2', host: 'your_host', port: your_port, username: 'your_username', password: PASSWORD, all_databases: true }Create a sample program named
main.rb:require 'sequel' require 'sequel/adapters/mysql2' require File.expand_path('config.rb', __dir__) # Create a connection db = Sequel.connect(CLIENT_CONFIG) # Create a database db_name = "ruby_test_db" db.run("CREATE DATABASE IF NOT EXISTS #{db_name}") db.disconnect # Reconnect to the new database CLIENT_CONFIG[:database] = db_name db = Sequel.connect(CLIENT_CONFIG) puts "Database '#{db_name}' selected" # Create a table db.run("DROP TABLE IF EXISTS users") db.run("CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )") # Insert sample data sample_names = ["Alice", "Bob", "Charlie", "David"] sample_names.each do |name| db.run("INSERT INTO users (name) VALUES ('#{name}')") end puts "Table created and sample data inserted successfully" puts "Inserted #{sample_names.size} sample records" # Query and display all data results = db[:users] puts "\nUsers:" results.each do |row| puts "ID: #{row[:id]}, Name: #{row[:name]}, Created at: #{row[:created_at]}" end # Close the connection db.disconnect
Step 5: Run the sample program
Run the program:
ruby main.rbExpected output:
Database 'ruby_test_db' selected Table created and sample data inserted successfully Inserted 4 sample records Users: ID: 1, Name: Alice, Created at: 2025-05-21 15:20:06 +0800 ID: 2, Name: Bob, Created at: 2025-05-21 15:20:06 +0800 ID: 3, Name: Charlie, Created at: 2025-05-21 15:20:06 +0800 ID: 4, Name: David, Created at: 2025-05-21 15:20:06 +0800
Common issues
Connection error: If you cannot connect to the database, check the following:
- Whether the database endpoint and port are correct
- Whether the username and password are correct
- Whether the network connection is normal
Permission error: If you encounter a permission-related error, make sure the user has sufficient permissions to perform the required operations.
SQL syntax error: If there is a syntax error in the SQL statement, check whether the SQL statement is correctly written.
Performance optimization suggestions
- Use Sequel's batch operations.
- Use a connection pool to manage database connections.
- Use precompiled queries.
- Use caching appropriately.
- Optimize database indexes.