IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Chargement de données dans la base


Sujet :

Django Python

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 447
    Points : 140
    Points
    140
    Par défaut Chargement de données dans la base
    Bonjour,

    J'essaie de charger des données via un script dans la base de données de mon appli Django.

    Dans models.py, je crée un modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class myModel(models.Model):
        name = models.CharField(max_length=25)
        definition = models.CharField(max_length=120)
        code = models.CharField(primary_key=True, max_length=25)
        sourceIdentifier = models.IntegerField()
        definitionSource = models.CharField(max_length=10)
     
        objects = models.Manager()
     
        class Meta:
            pass
     
        def __str__(self):
            return self.name
    Je lance toutes les instructions migrate pour crée la base, ça c'est OK.

    Je crée un module importData.py, que je met au même niveau dans l'arborescence que models.py, dans lequel j'ai une fonction de lecture d'un fichier csv pour chargement dans la base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    from models import myModel
    import csv
     
    def import_to_model(file_path):
     
        with open(file_path, 'r') as file:
            reader = csv.DictReader(file)
            for row in reader:
                myModel.objects.create(
                    name=row['name'],
                    definition=row['definition'],
                    code=row['code'],
                    sourceIdentifier=row['sourceIdentifier'],
                    definitionSource=row['definitionSource']
                )
     
     
    if __name__ == '__main__':
        csv_file_path = 'path/to/csv/fichier.csv'
        import_to_model(csv_file_path)
    Quand je lance l'exécution, j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
    J'ai bien mon fichier settings.py dans le répertoire du projet, et la base de données est bien créée, alors, qu'est ce qui cloche?

    Merci,
    Nico

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 895
    Points : 7 254
    Points
    7 254
    Par défaut
    Bonjour,

    Citation Envoyé par DiverSIG
    Quand je lance l'exécution
    Soyez plus précis, quelle est votre ligne d'exécution ?

    Citation Envoyé par DiverSIG
    Je crée un module importData.py, que je met au même niveau dans l'arborescence que models.py
    Ça sent le roussi, vous n'avez sans doute pas compris le fonctionnement de Django pour faire ce type de travail.

    Voir la documentation !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 447
    Points : 140
    Points
    140
    Par défaut
    OK, je connaissais pas ce système de commandes personnalisées, je débute en django

    dans mon fichier de définition de ma commande, quand j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from myapp.models import myModel
    j'ai une erreur Unresolved reference 'myapp'. Pourtant je l'ai bien déclaré dans le settings.py.

    autre question :
    qu'est ce qu'on met dans le fichier _private.py qui est dans le répertoire commands ?

    Nico

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Et oui, les custom commands en Django, c'est la vie

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 447
    Points : 140
    Points
    140
    Par défaut
    Dans le fichier de définition de la commande, si je déclare les modèles par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from myproject.myapp.models import myModel
    il n'y a plus l'erreur, mais quand je lance la commande, j'ai l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ModuleNotFoundError: No module named 'myproject.myapp'

    Nico

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 895
    Points : 7 254
    Points
    7 254
    Par défaut
    Citation Envoyé par DiverSIG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ModuleNotFoundError: No module named 'myproject.myapp'
    Avez-vous bien placé les fichiers __init__.py comme indiqué dans la documentation ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/07/2012, 05h54
  2. Chargement d'image dans une base de donnée
    Par IsraGab dans le forum Silverlight
    Réponses: 4
    Dernier message: 07/06/2011, 00h27
  3. chargement de donnes dans jfreechart
    Par bergoliv dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 07/12/2010, 19h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo