sqlitex v1.4.0 Sqlitex

Sqlitex gives you a way to create and query sqlite databases.

Basic Example

iex> {:ok, db} = Sqlitex.open(":memory:")
iex> Sqlitex.exec(db, "CREATE TABLE t (a INTEGER, b INTEGER, c INTEGER)")
:ok
iex> Sqlitex.exec(db, "INSERT INTO t VALUES (1, 2, 3)")
:ok
iex> Sqlitex.query(db, "SELECT * FROM t")
{:ok, [[a: 1, b: 2, c: 3]]}
iex> Sqlitex.query(db, "SELECT * FROM t", into: %{})
{:ok, [%{a: 1, b: 2, c: 3}]}

Configuration

Sqlitex uses the Erlang library esqlite which accepts a timeout parameter for almost all interactions with the database. The default value for this timeout is 5000 ms. Many functions in Sqlitex accept a :db_timeout option that is passed on to the esqlite calls and that also defaults to 5000 ms. If required, this default value can be overridden globally with the following in your config.exs:

config :sqlitex, db_timeout: 10_000 # or other positive integer number of ms

Link to this section Summary

Functions

Create a new table name where table_opts are a list of table constraints and cols are a keyword list of columns. The following table constraints are supported: :temp and :primary_key. Example

Link to this section Types

Link to this type connection()
connection() :: {:connection, reference(), binary()}
Link to this type sqlite_error()
sqlite_error() :: {:error, {:sqlite_error, charlist()}}
Link to this type string_or_charlist()
string_or_charlist() :: String.t() | charlist()

Link to this section Functions

Link to this function close(db, opts \\ [])
close(connection(), Keyword.t()) :: :ok
Link to this function create_table(db, name, table_opts \\ [], cols, call_opts \\ [])

Create a new table name where table_opts are a list of table constraints and cols are a keyword list of columns. The following table constraints are supported: :temp and :primary_key. Example:

[:temp, {:primary_key, [:id]}]

Columns can be passed as:

  • name: :type
  • name: {:type, constraints}

where constraints is a list of column constraints. The following column constraints are supported: :primary_key, :not_null and :autoincrement. Example:

id: :integer, name: {:text, [:not_null]}

Link to this function exec(db, sql, opts \\ [])
Link to this function open(path, opts \\ [])
open(charlist() | String.t(), Keyword.t()) ::
  {:ok, connection()} | {:error, {atom(), charlist()}}
Link to this function query(db, sql, opts \\ [])
Link to this function query!(db, sql, opts \\ [])
Link to this function query_rows(db, sql, opts \\ [])
Link to this function query_rows!(db, sql, opts \\ [])
Link to this function with_db(path, fun, opts \\ [])