diff --git a/sqlite_utils/cli.py b/sqlite_utils/cli.py index 7b4098d..7c09578 100644 --- a/sqlite_utils/cli.py +++ b/sqlite_utils/cli.py @@ -7,7 +7,7 @@ import json import sys import csv as csv_std import tabulate -import sqlite3 +from .utils import sqlite3 def output_options(fn): diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index d40951e..e03ef63 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -1,4 +1,4 @@ -import sqlite3 +from .utils import sqlite3 from collections import namedtuple import datetime import hashlib diff --git a/sqlite_utils/utils.py b/sqlite_utils/utils.py new file mode 100644 index 0000000..40b1819 --- /dev/null +++ b/sqlite_utils/utils.py @@ -0,0 +1,4 @@ +try: + import pysqlite3 as sqlite3 +except ImportError: + import sqlite3 diff --git a/tests/conftest.py b/tests/conftest.py index 322d627..c7b4077 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,5 @@ from sqlite_utils import Database -import sqlite3 +from sqlite_utils.utils import sqlite3 import pytest diff --git a/tests/test_cli.py b/tests/test_cli.py index 2fb1d04..ddb936b 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -4,7 +4,7 @@ from click.testing import CliRunner import json import os import pytest -import sqlite3 +from sqlite_utils.utils import sqlite3 from .utils import collapse_whitespace diff --git a/tests/test_create.py b/tests/test_create.py index 91ad169..b6519c8 100644 --- a/tests/test_create.py +++ b/tests/test_create.py @@ -549,7 +549,7 @@ def test_create_index_if_not_exists(fresh_db): assert [] == dogs.indexes dogs.create_index(["name"]) assert 1 == len(dogs.indexes) - with pytest.raises(sqlite3.OperationalError): + with pytest.raises(Exception, match="index idx_dogs_name already exists"): dogs.create_index(["name"]) dogs.create_index(["name"], if_not_exists=True) @@ -593,7 +593,7 @@ def test_insert_thousands_ignores_extra_columns_after_first_100(fresh_db): def test_insert_ignore(fresh_db): fresh_db["test"].insert({"id": 1, "bar": 2}, pk="id") # Should raise an error if we try this again - with pytest.raises(sqlite3.IntegrityError): + with pytest.raises(Exception, match="UNIQUE constraint failed"): fresh_db["test"].insert({"id": 1, "bar": 2}, pk="id") # Using ignore=True should cause our insert to be silently ignored fresh_db["test"].insert({"id": 1, "bar": 3}, pk="id", ignore=True)