Bonjour,
j'ai un projet en Django consistant à utiliser certaines tables d'une base de données Sqlite externe.
Pour réaliser les models dont j'ai besoin, j'ai lancé la commande.
Code : Sélectionner tout - Visualiser dans une fenêtre à part python manage.py inspectdb
Pour des raisons d'ordre pratique, chaque model a été nommé différemment du nom de la table qu'il représente.
Par exemple, j'ai fait ceci :
Django ne gère la base de données qu'en lecture seule car, je le répète , la base Sqlite est externe au projet Python/Django.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class Author(models.Model): '''Author model class.''' name: models.TextField = models.TextField( blank=True, null=True, db_column='sort' ) class Meta: managed: bool = False db_table: str = 'authors'
J'ai voulu faire le test suivant :
Le test ne passe pas au vert. Voici ce que Pytest me sort en retour :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class TestModels: @pytest.mark.django_db def test_author(self) -> None: auth: Author = Author.objects.create(name='aaa') auth.save() assert auth.name == 'aaa'
La table authors existe pourtant. C'est vers elle que pointe mon model Author.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ---------------------------------------------------------------------- Captured stderr setup ----------------------------------------------------------------------- Creating test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')... ===================================================================== short test summary info ====================================================================== FAILED xxx/tests/unit/test_models.py::TestModels::test_author - django.db.utils.OperationalError: no such table: authors
Est-ce parce que la base de données est en lecture seule que le test de création d'un enregistrement dans la table authors ne peut être mené ?
Ca me parait plus que plausible, sauf que le message d'erreur levé par l'exception django.db.utils.OperationalError parle de tout autre chose : no such table: authors
Quelqu'un a-t-il une idée ?
Partager