class DuckDB::Database
The Database class encapsulates a DuckDB database.
The usage is as follows:
require 'duckdb' db = DuckDB::Database.open # database in memory con = db.connect con.query('CREATE TABLE users (id INTEGER, name VARCHAR(30))') con.query("INSERT into users VALUES(1, 'Alice')") con.query("INSERT into users VALUES(2, 'Bob')") con.query("INSERT into users VALUES(3, 'Cathy')") result = con.query('SELECT * from users') result.each do |row| p row end
Public Class Methods
Source
# File lib/duckdb/database.rb, line 31 def initialize(path = :memory, config: nil, &block) if path.is_a?(Symbol) && path != :memory raise ArgumentError, "path must be a String or :memory, got #{path.inspect}" end dbpath = path == :memory ? nil : path _initialize(dbpath, config) _yield_self_and_close(&block) if block end
Opens a DuckDB database.
DuckDB::Database.new #=> in-memory database DuckDB::Database.new(:memory) #=> in-memory database DuckDB::Database.new('test.db') #=> file database DuckDB::Database.new('test.db', config: config) #=> with config DuckDB::Database.new(config: config) #=> in-memory with config
Source
# File lib/duckdb/database.rb, line 53 def open(path = :memory, *args, config: nil) path, config = _handle_deprecated_open_args(path, args, config) db = new(path, config: config) return db unless block_given? begin yield db ensure db.close end end
Opens database.
DuckDB::Database.open #=> in-memory database DuckDB::Database.open('test.db') #=> file database DuckDB::Database.open('test.db', config: config) DuckDB::Database.open(config: config) #=> in-memory with config DuckDB::Database.open do |db| con = db.connect con.query('CREATE TABLE users (id INTEGER, name VARCHAR(30))') end
Public Instance Methods
Source
static VALUE database_close(VALUE self) {
rubyDuckDB *ctx;
TypedData_Get_Struct(self, rubyDuckDB, &database_data_type, ctx);
close_database(ctx);
return self;
}
closes DuckDB database.
Source
# File lib/duckdb/database.rb, line 103 def connect conn = _connect return conn unless block_given? begin yield conn ensure conn.disconnect end end
connects database.
The method yields block and disconnects the database if block given
db = DuckDB::Database.open con = db.connect # => DuckDB::Connection db.connect do |con| con.query('CREATE TABLE users (id INTEGER, name VARCHAR(30))') end