mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-09-28 21:04:13 +02:00
Sanity check add_foreign_key() column exists, closes #29
This commit is contained in:
parent
364b0fb678
commit
976263effc
2 changed files with 11 additions and 0 deletions
|
|
@ -466,6 +466,9 @@ class Table:
|
||||||
return pks[0].name
|
return pks[0].name
|
||||||
|
|
||||||
def add_foreign_key(self, column, other_table=None, other_column=None):
|
def add_foreign_key(self, column, other_table=None, other_column=None):
|
||||||
|
# Ensure column exists
|
||||||
|
if column not in self.columns_dict:
|
||||||
|
raise AlterError("No such column: {}".format(column))
|
||||||
# If other_table is not specified, attempt to guess it from the column
|
# If other_table is not specified, attempt to guess it from the column
|
||||||
if other_table is None:
|
if other_table is None:
|
||||||
other_table = self.guess_foreign_table(column)
|
other_table = self.guess_foreign_table(column)
|
||||||
|
|
|
||||||
|
|
@ -280,6 +280,14 @@ def test_add_foreign_key(fresh_db):
|
||||||
|
|
||||||
|
|
||||||
def test_add_foreign_key_error_if_column_does_not_exist(fresh_db):
|
def test_add_foreign_key_error_if_column_does_not_exist(fresh_db):
|
||||||
|
fresh_db["books"].insert(
|
||||||
|
{"id": 1, "title": "Hedgehogs of the world", "author_id": 1}
|
||||||
|
)
|
||||||
|
with pytest.raises(AlterError):
|
||||||
|
fresh_db["books"].add_foreign_key("author2_id", "books", "id")
|
||||||
|
|
||||||
|
|
||||||
|
def test_add_foreign_key_error_if_other_table_does_not_exist(fresh_db):
|
||||||
fresh_db["books"].insert({"title": "Hedgehogs of the world", "author_id": 1})
|
fresh_db["books"].insert({"title": "Hedgehogs of the world", "author_id": 1})
|
||||||
with pytest.raises(AlterError):
|
with pytest.raises(AlterError):
|
||||||
fresh_db["books"].add_foreign_key("author_id", "authors", "id")
|
fresh_db["books"].add_foreign_key("author_id", "authors", "id")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue