2
votes

Comment résoudre l'erreur SQLdecode lorsque vous migrez des modèles dans django?

Je suis nouveau sur django, j'ai créé un projet et une application et je souhaite connecter mon projet au mongodb. lorsque j'entre la commande python manage.py migrate , j'obtiens l'erreur mentionnée ci-dessous.

J'ai supprimé la base de données et effacé toutes les migrations dans la table django_migration et supprimé les fichiers de migration dans le dossier migrations créé. Toujours la même erreur.

S'il vous plaît, aidez-moi. Merci d'avance

Erreur:

from django.db import models

# Create your models here.
class dummy(models.Model):

    name= models.CharField(max_length=100, blank=True, null= True)

L'exception ci-dessus était la cause directe de l'exception suivante:

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'DB_name',
        'HOST':'localhost',
        # 'PORT': 27017,
        # 'USER':'',
        # 'PASSWORD':''
    },


2 commentaires

Le TypeError: documents doit être une liste non vide provient du pilote pymongo et signifie ce qu'il dit, car il a obtenu une "liste vide" quand il attendait une entrée. Avez-vous d'abord exécuté une python manage.py makemigrations ? Parce que l'erreur semble indiquer qu'il n'y a "rien à faire". Vous avez dit que vous avez "supprimé", mais AFIAK vous devez toujours lancer les makemigrations en premier.


J'ai d'abord effectué python manage.py makemigrations puis j'ai exécuté python manage.py migrate , toujours pas de chance


7 Réponses :


-1
votes

J'ai le même problème avec u, j'ai essayé avec sqlite3 comme base de données, et les données sont comme ceci:

 entrez la description de l'image ici

donc les données ne sont pas vides !!

Et j'ai essayé de changer la commande sql comme suit (ligne 760 à sql2mongo \ query.py):

statement = statement[0]
    sm_type = statement.get_type()
    if sm_type=='INSERT':
        self._sql = 'INSERT INTO "django_migrations" ("app", "name", "applied") VALUES ("test", "windy", "2019-03-15 12:00")'

mais a toujours échoué.


0 commentaires

2
votes

J'ai résolu ce problème. Le problème peut être la version de sqlparse - sqlparse 0.2.4 fonctionne bien, mais pas sqlparse 0.3.0. Utilisez la commande suivante:

pip install sqlparse==0.2.4 --user


1 commentaires

Fait cela et a fonctionné. Mais ce qui est vu - si je comprends bien - est d'installer la dernière version de sqlpars. Je pense que cela parce que la sortie Collecting sqlparse == 0.2.4 Utilisation de https://files.pythonhosted.org/packages/65/85/20bdd72f4537cf‌ 2c4d5d005368d502b2f4‌ 64ede22982e724a82c86‌ 268eda / sqlparse-0.2.‌ en cache py2.py3-none-any.w‌ hl Installation des paquets collectés: sqlparse sqlparse-0.3.1 installé avec succès



0
votes

Installez simplement sqlprase pour résoudre ce problème.

Téléchargez-le github sqlprase

pip install filename.zip


0 commentaires

4
votes

Après avoir créé le projet django, désinstallez sqlparse en tapant

python3 manage.py migrate

Puis installez sqlparse version = 0.2.4 en tapant

pip3 install sqlparse==0.2.4


0 commentaires

0
votes

Utilisez python manage.py migrate --fake-initial la première fois que vous migrez votre projet.

Dans setting.py ajouter INSTALLED_APPS = [ "APP_NAME.apps.APP_NAMEConfig", ..., ..., ]


0 commentaires

0
votes

Je l'ai résolu de cette façon sqlparse == 0.2.4 et djongo == 1.3.3 et django == 2.1.7


0 commentaires

0
votes

J'ai mis à jour djongo avec pip install --upgrade djongo et j'ai effectué les migrations python manage.py migrate --fake-initial et cela a été corrigé.


0 commentaires