From 57fc8ce55ecbecd7af60281404cb10573be36c98 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sun, 27 Jan 2019 15:53:41 -0800 Subject: [PATCH] Database() constructor works with pathlib.Path --- sqlite_utils/db.py | 3 +++ tests/test_create.py | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index 773ac7a..ca6f93b 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -2,6 +2,7 @@ import sqlite3 from collections import namedtuple import datetime import json +import pathlib Column = namedtuple( "Column", ("cid", "name", "type", "notnull", "default_value", "is_pk") @@ -16,6 +17,8 @@ class Database: def __init__(self, filename_or_conn): if isinstance(filename_or_conn, str): self.conn = sqlite3.connect(filename_or_conn) + elif isinstance(filename_or_conn, pathlib.Path): + self.conn = sqlite3.connect(str(filename_or_conn)) else: self.conn = filename_or_conn diff --git a/tests/test_create.py b/tests/test_create.py index 0a09fdc..4cedc4c 100644 --- a/tests/test_create.py +++ b/tests/test_create.py @@ -1,6 +1,7 @@ -from sqlite_utils.db import Index +from sqlite_utils.db import Index, Database import collections import datetime +import pathlib import pytest import json @@ -181,3 +182,10 @@ def test_create_view(fresh_db): def test_vacuum(fresh_db): fresh_db["data"].insert({"foo": "foo", "bar": "bar"}) fresh_db.vacuum() + + +def test_works_with_pathlib_path(tmpdir): + path = pathlib.Path(tmpdir / "test.db") + db = Database(path) + db["demo"].insert_all([{"foo": 1}]) + assert 1 == db["demo"].count