Class: Sequel::SQLite::Database
- Includes:
- DatabaseMethods
- Defined in:
- lib/sequel/adapters/sqlite.rb
Overview
Database class for SQLite databases used with Sequel and the ruby-sqlite3 driver.
Constant Summary
Constants included from DatabaseMethods
Sequel::SQLite::DatabaseMethods::AUTO_VACUUM, Sequel::SQLite::DatabaseMethods::PRIMARY_KEY_INDEX_RE, Sequel::SQLite::DatabaseMethods::SYNCHRONOUS, Sequel::SQLite::DatabaseMethods::TABLES_FILTER, Sequel::SQLite::DatabaseMethods::TEMP_STORE
Constants inherited from Database
Database::ADAPTERS, Database::AUTOINCREMENT, Database::CASCADE, Database::COLUMN_DEFINITION_ORDER, Database::COMMA_SEPARATOR, Database::MSSQL_DEFAULT_RE, Database::MYSQL_TIMESTAMP_RE, Database::NOT_NULL, Database::NO_ACTION, Database::NULL, Database::POSTGRES_DEFAULT_RE, Database::PRIMARY_KEY, Database::RESTRICT, Database::SET_DEFAULT, Database::SET_NULL, Database::SQL_BEGIN, Database::SQL_COMMIT, Database::SQL_RELEASE_SAVEPOINT, Database::SQL_ROLLBACK, Database::SQL_ROLLBACK_TO_SAVEPOINT, Database::SQL_SAVEPOINT, Database::STRING_DEFAULT_RE, Database::TEMPORARY, Database::TRANSACTION_BEGIN, Database::TRANSACTION_COMMIT, Database::TRANSACTION_ISOLATION_LEVELS, Database::TRANSACTION_ROLLBACK, Database::UNDERSCORE, Database::UNIQUE, Database::UNSIGNED
Instance Attribute Summary
Attributes inherited from Database
#default_schema, #log_warn_duration, #loggers, #opts, #pool, #prepared_statements, #sql_log_level, #transaction_isolation_level
Instance Method Summary collapse
-
#connect(server) ⇒ Object
Connect to the database.
-
#dataset(opts = nil) ⇒ Object
Return instance of Sequel::SQLite::Dataset with the given options.
-
#execute(sql, opts = {}, &block) ⇒ Object
Run the given SQL with the given arguments and yield each row.
-
#execute_ddl(sql, opts = {}) ⇒ Object
Drop any prepared statements on the connection when executing DDL.
-
#execute_dui(sql, opts = {}) ⇒ Object
Run the given SQL with the given arguments and return the number of changed rows.
-
#execute_insert(sql, opts = {}) ⇒ Object
Run the given SQL with the given arguments and return the last inserted row id.
-
#single_value(sql, opts = {}) ⇒ Object
Run the given SQL with the given arguments and return the first value of the first row.
Methods included from DatabaseMethods
#alter_table, #auto_vacuum, #auto_vacuum=, #database_type, #foreign_keys, #foreign_keys=, #indexes, #pragma_get, #pragma_set, #sqlite_version, #supports_savepoints?, #synchronous, #synchronous=, #tables, #temp_store, #temp_store=
Methods inherited from Database
#<<, #[], adapter_class, adapter_scheme, #adapter_scheme, #add_column, #add_index, #add_servers, #alter_table, #call, #cast_type_literal, connect, #create_or_replace_view, #create_table, #create_table!, #create_table?, #create_view, #database_type, #disconnect, #drop_column, #drop_index, #drop_table, #drop_view, #dump_indexes_migration, #dump_schema_migration, #dump_table_schema, #each_server, #fetch, #from, #get, identifier_input_method, #identifier_input_method, identifier_input_method=, #identifier_input_method=, #identifier_output_method, identifier_output_method, #identifier_output_method=, identifier_output_method=, #indexes, #initialize, #inspect, #literal, #log_info, #log_yield, #logger=, #query, #quote_identifiers=, quote_identifiers=, #quote_identifiers?, #remove_servers, #rename_column, #rename_table, #run, #schema, #select, #serial_primary_key_options, #servers, #set_column_default, #set_column_type, single_threaded=, #single_threaded?, #supports_prepared_transactions?, #supports_savepoints?, #supports_transaction_isolation_levels?, #synchronize, #table_exists?, #tables, #test_connection, #transaction, #typecast_value, #uri, #url
Methods included from Metaprogramming
Constructor Details
This class inherits a constructor from Sequel::Database
Instance Method Details
#connect(server) ⇒ Object
Connect to the database. Since SQLite is a file based database, the only options available are :database (to specify the database name), and :timeout, to specify how long to wait for the database to be available if it is locked, given in milliseconds (default is 5000).
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/sequel/adapters/sqlite.rb', line 59 def connect(server) opts = server_opts(server) opts[:database] = ':memory:' if blank_object?(opts[:database]) db = ::SQLite3::Database.new(opts[:database]) db.busy_timeout(opts.fetch(:timeout, 5000)) connection_pragmas.each{|s| log_yield(s){db.execute_batch(s)}} class << db attr_reader :prepared_statements end db.instance_variable_set(:@prepared_statements, {}) db end |
#dataset(opts = nil) ⇒ Object
Return instance of Sequel::SQLite::Dataset with the given options.
76 77 78 |
# File 'lib/sequel/adapters/sqlite.rb', line 76 def dataset(opts = nil) SQLite::Dataset.new(self, opts) end |
#execute(sql, opts = {}, &block) ⇒ Object
Run the given SQL with the given arguments and yield each row.
81 82 83 |
# File 'lib/sequel/adapters/sqlite.rb', line 81 def execute(sql, opts={}, &block) _execute(:select, sql, opts, &block) end |
#execute_ddl(sql, 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.
93 94 95 96 97 98 99 |
# File 'lib/sequel/adapters/sqlite.rb', line 93 def execute_ddl(sql, 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 = {}) ⇒ Object
Run the given SQL with the given arguments and return the number of changed rows.
86 87 88 |
# File 'lib/sequel/adapters/sqlite.rb', line 86 def execute_dui(sql, opts={}) _execute(:update, sql, opts) end |
#execute_insert(sql, opts = {}) ⇒ Object
Run the given SQL with the given arguments and return the last inserted row id.
102 103 104 |
# File 'lib/sequel/adapters/sqlite.rb', line 102 def execute_insert(sql, opts={}) _execute(:insert, sql, opts) end |
#single_value(sql, opts = {}) ⇒ Object
Run the given SQL with the given arguments and return the first value of the first row.
107 108 109 |
# File 'lib/sequel/adapters/sqlite.rb', line 107 def single_value(sql, opts={}) _execute(:single_value, sql, opts) end |