module Pandas::IO::Helpers
Public Instance Methods
data_frame_from_query_result(result, index_col, coerce_float, parse_dates)
click to toggle source
# File lib/pandas/io/active_record.rb, line 54 def data_frame_from_query_result(result, index_col, coerce_float, parse_dates) records = result.map {|row| row.values } df = Pandas::DataFrame.from_records( records, columns: result.columns, coerce_float: coerce_float ) # TODO: self.sql._harmonize_columns(parse_dates: parse_dates) df.set_index(index_col, inplace: true) if index_col df end
parse_read_sql_query_args(*args)
click to toggle source
# File lib/pandas/io/active_record.rb, line 83 def parse_read_sql_query_args(*args) kwargs = args.pop if args.last.is_a? Hash if kwargs names = [:index_col, :coerce_float, :parse_dates, :chunksize] names.each_with_index do |name, index| if kwargs.has_key? name if args[index] warn "#{name} is given as both positional and keyword arguments" else args[index] = kwargs[name] end end end end args end
parse_read_sql_table_args(*args)
click to toggle source
# File lib/pandas/io/active_record.rb, line 66 def parse_read_sql_table_args(*args) kwargs = args.pop if args.last.is_a? Hash if kwargs names = [:index_col, :coerce_float, :parse_dates, :columns, :schema, :chunksize] names.each_with_index do |name, index| if kwargs.has_key? name if args[index] warn "#{name} is given as both positional and keyword arguments" else args[index] = kwargs[name] end end end end args end
read_sql_query_from_active_record(query, conn, *args)
click to toggle source
# File lib/pandas/io/active_record.rb, line 18 def read_sql_query_from_active_record(query, conn, *args) case conn when ActiveRecord::ConnectionAdapters::AbstractAdapter read_sql_query_from_active_record_connection(query, conn, *args) else raise TypeError, "unexpected type of argument #{conn.class}" end end
read_sql_query_from_active_record_connection(query, conn, *args)
click to toggle source
# File lib/pandas/io/active_record.rb, line 46 def read_sql_query_from_active_record_connection(query, conn, *args) args = parse_read_sql_query_args(*args) index_col, coerce_float, parse_dates, chunksize = *args # TODO: chunksize result = conn.exec_query(query, 'pandas_sql') data_frame_from_query_result(result, index_col, coerce_float, parse_dates) end
read_sql_table_from_active_record(table_name, conn, *args)
click to toggle source
# File lib/pandas/io/active_record.rb, line 9 def read_sql_table_from_active_record(table_name, conn, *args) case conn when ActiveRecord::ConnectionAdapters::AbstractAdapter read_sql_table_from_active_record_connection(table_name, conn, *args) else raise TypeError, "unexpected type of argument #{conn.class}" end end
read_sql_table_from_active_record_connection(table_name, conn, *args)
click to toggle source
# File lib/pandas/io/active_record.rb, line 27 def read_sql_table_from_active_record_connection(table_name, conn, *args) args = parse_read_sql_table_args(*args) index_col, coerce_float, parse_dates, columns, schema, chunksize = *args if columns table_columns = conn.columns(table_name) column_names = columns.select {|c| table_columns.include?(c) }.map do |c| conn.quote_column_name(c.to_s) end else column_names = '*' end query = <<-SQL select #{column_names} from #{conn.quote_table_name(table_name)}; SQL # TODO: chunksize result = conn.exec_query(query, 'pandas_sql') data_frame_from_query_result(result, index_col, coerce_float, parse_dates) end