Class: Sequel::SQLite::Database
- Includes:
- DatabaseMethods
- Defined in:
- lib/sequel/adapters/sqlite.rb
Constant Summary
Constants included from DatabaseMethods
Sequel::SQLite::DatabaseMethods::AUTO_VACUUM, Sequel::SQLite::DatabaseMethods::SYNCHRONOUS, Sequel::SQLite::DatabaseMethods::TEMP_STORE, Sequel::SQLite::DatabaseMethods::TRANSACTION_MODE
Constants inherited from Database
Database::ADAPTERS, Database::COLUMN_DEFINITION_ORDER, Database::COLUMN_SCHEMA_DATETIME_TYPES, Database::COLUMN_SCHEMA_STRING_TYPES, Database::COMBINABLE_ALTER_TABLE_OPS, Database::DEFAULT_DATABASE_ERROR_REGEXPS, Database::DEFAULT_STRING_COLUMN_SIZE, Database::EXTENSIONS, Database::OPTS, Database::SCHEMA_TYPE_CLASSES, Database::TRANSACTION_ISOLATION_LEVELS
Instance Attribute Summary collapse
-
#conversion_procs ⇒ Object
readonly
The conversion procs to use for this database.
Attributes included from DatabaseMethods
#integer_booleans, #transaction_mode, #use_timestamp_timezones
Attributes inherited from Database
#cache_schema, #dataset_class, #default_string_column_size, #log_connection_info, #log_warn_duration, #loggers, #opts, #pool, #prepared_statements, #sql_log_level, #timezone, #transaction_isolation_level
Instance Method Summary collapse
-
#connect(server) ⇒ Object
Connect to the database.
-
#disconnect_connection(c) ⇒ Object
Disconnect given connections from the database.
-
#execute(sql, opts = OPTS, &block) ⇒ Object
Run the given SQL with the given arguments and yield each row.
-
#execute_ddl(sql, opts = OPTS) ⇒ Object
Drop any prepared statements on the connection when executing DDL.
-
#execute_dui(sql, opts = OPTS) ⇒ Object
Run the given SQL with the given arguments and return the number of changed rows.
- #execute_insert(sql, opts = OPTS) ⇒ Object
- #freeze ⇒ Object
-
#to_application_timestamp(s) ⇒ Object
Handle Integer and Float arguments, since SQLite can store timestamps as integers and floats.
Methods included from DatabaseMethods
#database_type, #foreign_key_list, #indexes, #set_integer_booleans, #sqlite_version, #supports_create_table_if_not_exists?, #supports_deferrable_foreign_key_constraints?, #supports_partial_indexes?, #supports_savepoints?, #tables, #use_timestamp_timezones?, #values, #views
Methods inherited from Database
#<<, #[], adapter_class, #adapter_scheme, adapter_scheme, #add_column, #add_index, #add_servers, #after_commit, after_initialize, #after_rollback, #alter_table, #alter_table_generator, #call, #cast_type_literal, connect, #create_join_table, #create_join_table!, #create_join_table?, #create_or_replace_view, #create_table, #create_table!, #create_table?, #create_table_generator, #create_view, #database_type, #dataset, #disconnect, #drop_column, #drop_index, #drop_join_table, #drop_table, #drop_table?, #drop_view, #extend_datasets, #extension, extension, #fetch, #from, #from_application_timestamp, #get, #global_index_namespace?, #in_transaction?, #initialize, #inspect, #literal, #literal_symbol, #literal_symbol_set, load_adapter, #log_connection_yield, #log_exception, #log_info, #logger=, #prepared_statement, #quote_identifier, register_extension, #remove_servers, #rename_column, #rename_table, #rollback_checker, #rollback_on_exit, #run, run_after_initialize, #schema, #schema_type_class, #select, #serial_primary_key_options, #servers, #set_column_default, #set_column_type, #set_prepared_statement, set_shared_adapter_scheme, #sharded?, #single_threaded?, #supports_create_table_if_not_exists?, #supports_deferrable_constraints?, #supports_deferrable_foreign_key_constraints?, #supports_drop_table_if_exists?, #supports_foreign_key_parsing?, #supports_index_parsing?, #supports_partial_indexes?, #supports_prepared_transactions?, #supports_savepoints?, #supports_savepoints_in_prepared_transactions?, #supports_schema_parsing?, #supports_table_listing?, #supports_transaction_isolation_levels?, #supports_transactional_ddl?, #supports_view_listing?, #supports_views_with_check_option?, #supports_views_with_local_check_option?, #synchronize, #table_exists?, #test_connection, #transaction, #typecast_value, #uri, #url, #valid_connection?
Constructor Details
This class inherits a constructor from Sequel::Database
Instance Attribute Details
#conversion_procs ⇒ Object (readonly)
The conversion procs to use for this database
99 100 101 |
# File 'lib/sequel/adapters/sqlite.rb', line 99 def conversion_procs @conversion_procs end |
Instance Method Details
#connect(server) ⇒ Object
Connect to the database. Since SQLite is a file based database, available options are limited:
- :database
-
database name (filename or ‘:memory:’ or file: URI)
- :readonly
-
open database in read-only mode; useful for reading static data that you do not want to modify
- :timeout
-
how long to wait for the database to be available if it is locked, given in milliseconds (default is 5000)
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/sequel/adapters/sqlite.rb', line 109 def connect(server) opts = server_opts(server) opts[:database] = ':memory:' if blank_object?(opts[:database]) sqlite3_opts = {} sqlite3_opts[:readonly] = typecast_value_boolean(opts[:readonly]) if opts.has_key?(:readonly) db = ::SQLite3::Database.new(opts[:database].to_s, sqlite3_opts) db.busy_timeout(typecast_value_integer(opts.fetch(:timeout, 5000))) if USE_EXTENDED_RESULT_CODES db.extended_result_codes = true end connection_pragmas.each{|s| log_connection_yield(s, db){db.execute_batch(s)}} class << db attr_reader :prepared_statements end db.instance_variable_set(:@prepared_statements, {}) db end |
#disconnect_connection(c) ⇒ Object
Disconnect given connections from the database.
132 133 134 135 |
# File 'lib/sequel/adapters/sqlite.rb', line 132 def disconnect_connection(c) c.prepared_statements.each_value{|v| v.first.close} c.close end |
#execute(sql, opts = OPTS, &block) ⇒ Object
Run the given SQL with the given arguments and yield each row.
138 139 140 |
# File 'lib/sequel/adapters/sqlite.rb', line 138 def execute(sql, opts=OPTS, &block) _execute(:select, sql, opts, &block) end |
#execute_ddl(sql, opts = OPTS) ⇒ Object
Drop any prepared statements on the connection when executing DDL. This is because prepared statements lock the table in such a way that you can’t drop or alter the table while a prepared statement that references it still exists.
150 151 152 153 154 155 156 |
# File 'lib/sequel/adapters/sqlite.rb', line 150 def execute_ddl(sql, opts=OPTS) synchronize(opts[:server]) do |conn| conn.prepared_statements.values.each{|cps, s| cps.close} conn.prepared_statements.clear super end end |
#execute_dui(sql, opts = OPTS) ⇒ Object
Run the given SQL with the given arguments and return the number of changed rows.
143 144 145 |
# File 'lib/sequel/adapters/sqlite.rb', line 143 def execute_dui(sql, opts=OPTS) _execute(:update, sql, opts) end |
#execute_insert(sql, opts = OPTS) ⇒ Object
158 159 160 |
# File 'lib/sequel/adapters/sqlite.rb', line 158 def execute_insert(sql, opts=OPTS) _execute(:insert, sql, opts) end |
#freeze ⇒ Object
162 163 164 165 |
# File 'lib/sequel/adapters/sqlite.rb', line 162 def freeze @conversion_procs.freeze super end |
#to_application_timestamp(s) ⇒ Object
Handle Integer and Float arguments, since SQLite can store timestamps as integers and floats.
168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/sequel/adapters/sqlite.rb', line 168 def (s) case s when String super when Integer super(Time.at(s).to_s) when Float super(DateTime.jd(s).to_s) else raise Sequel::Error, "unhandled type when converting to : #{s.inspect} (#{s.class.inspect})" end end |