Compare commits

...

2 commits

Author SHA1 Message Date
Simon Willison
e38d701fb1 Merge remote-tracking branch 'origin/main' into say-5/document-memory-attrs
# Conflicts:
#	tests/test_constructor.py
2026-07-07 19:34:36 -07:00
Sai Asish Y
36a34e95bf feat(db): document and test Database.memory and Database.memory_name
Refs #590
2026-05-13 11:55:13 -07:00
2 changed files with 39 additions and 0 deletions

View file

@ -109,6 +109,14 @@ You can also create a named in-memory database. Unlike regular memory databases
db = Database(memory_name="my_shared_database")
After creating a ``Database`` you can use ``db.memory`` and ``db.memory_name`` to tell whether it is backed by an in-memory database and to read the shared cache name. ``db.memory`` is ``True`` for any in-memory database and ``db.memory_name`` holds the name passed to ``memory_name=``, or ``None`` otherwise.
.. code-block:: python
db = Database(memory_name="shared")
db.memory # True
db.memory_name # "shared"
Connections use ``PRAGMA recursive_triggers=on`` by default. If you don't want to use `recursive triggers <https://www.sqlite.org/pragma.html#pragma_recursive_triggers>`__ you can turn them off using:
.. code-block:: python

View file

@ -61,6 +61,37 @@ def test_database_close(tmpdir, memory):
db.execute("select 1 + 1")
def test_memory_attribute_for_memory_true():
db = Database(memory=True)
assert db.memory is True
assert db.memory_name is None
def test_memory_attribute_for_memory_name():
db = Database(memory_name="shared_attr")
assert db.memory is True
assert db.memory_name == "shared_attr"
def test_memory_attribute_for_memory_string_path():
db = Database(":memory:")
assert db.memory is True
assert db.memory_name is None
def test_memory_attribute_for_file_path(tmpdir):
db = Database(str(tmpdir / "file.db"))
assert db.memory is False
assert db.memory_name is None
def test_memory_attribute_for_existing_connection():
conn = sqlite3.connect(":memory:")
db = Database(conn)
assert db.memory is False
assert db.memory_name is None
@pytest.mark.skipif(
sys.version_info < (3, 12),
reason="sqlite3.connect(autocommit=) requires Python 3.12",