Class: Daru::IO::Importers::SQL

Inherits:
Base
  • Object
show all
Defined in:
lib/daru/io/importers/sql.rb

Overview

SQL Importer Class, that extends from_sql and read_sql methods to Daru::DataFrame

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#optional_gem

Constructor Details

#initializeSQL

Checks for required gem dependencies of SQL Importer



12
13
14
15
16
17
# File 'lib/daru/io/importers/sql.rb', line 12

def initialize
  optional_gem 'dbd-sqlite3', requires: 'dbd/SQLite3'
  optional_gem 'activerecord', '~> 4.0', requires: 'active_record'
  optional_gem 'dbi'
  optional_gem 'sqlite3'
end

Class Method Details

.from(dbh) ⇒ Daru::IO::Importers::SQL

Loads from a DBI connection

Examples:

Importing from a DBI connection

instance = Daru::IO::Importers::SQL.from(DBI.connect("DBI:Mysql:database:localhost", "user", "password"))

Parameters:

  • dbh (DBI::DatabaseHandle)

    A DBI connection.

Returns:



29
30
31
32
# File 'lib/daru/io/importers/sql.rb', line 29

def from(dbh)
  @dbh = dbh
  self
end

.read(path) ⇒ Daru::IO::Importers::SQL

Reads from a sqlite.db file

Examples:

Reading from a sqlite.db file

instance = Daru::IO::Importers::SQL.read('path/to/sqlite.db')

Parameters:

  • path (String)

    Path to a SQlite3 database file.

Returns:



44
45
46
47
# File 'lib/daru/io/importers/sql.rb', line 44

def read(path)
  @dbh = attempt_sqlite3_connection(path) if Pathname(path).exist?
  self
end

Instance Method Details

#call(query) ⇒ Daru::DataFrame

Imports a Daru::DataFrame from SQL Importer instance

Examples:

Importing with a SQL query

df = instance.call("SELECT * FROM test")

#=> #<Daru::DataFrame(2x3)>
#      id  name   age
# 0     1 Homer    20
# 1     2 Marge    30

Parameters:

  • query (String)

    The query to be executed

Returns:



62
63
64
65
66
67
# File 'lib/daru/io/importers/sql.rb', line 62

def call(query)
  @query          = query
  @conn, @adapter = choose_adapter(@dbh, @query)
  df_hash         = result_hash
  Daru::DataFrame.new(df_hash).tap(&:update)
end

#from(dbh) ⇒ Daru::IO::Importers::SQL

Loads from a DBI connection

Examples:

Importing from a DBI connection

instance = Daru::IO::Importers::SQL.from(DBI.connect("DBI:Mysql:database:localhost", "user", "password"))

Parameters:

  • dbh (DBI::DatabaseHandle)

    A DBI connection.

Returns:



29
30
31
32
# File 'lib/daru/io/importers/sql.rb', line 29

def from(dbh)
  @dbh = dbh
  self
end

#read(path) ⇒ Daru::IO::Importers::SQL

Reads from a sqlite.db file

Examples:

Reading from a sqlite.db file

instance = Daru::IO::Importers::SQL.read('path/to/sqlite.db')

Parameters:

  • path (String)

    Path to a SQlite3 database file.

Returns:



44
45
46
47
# File 'lib/daru/io/importers/sql.rb', line 44

def read(path)
  @dbh = attempt_sqlite3_connection(path) if Pathname(path).exist?
  self
end