Je veux écrire un script Python pour importer le contenu du fichier CSV dans la base de données d'une application Django. Ainsi, pour chaque enregistrement CSV, je crée une instance de mon modèle, définissez les valeurs appropriées à partir de la ligne CSV analysée et appelez save sur l'instance du modèle. Par exemple, voir ci-dessous:Django: Importer un fichier CSV et gérer correctement le conflit des valeurs uniques
for row in dataReader:
person=Person()
person.name=row[0]
person.age=row[1]
person.save()
Maintenant, disons que le nom Champ est marqué comme unique dans le modèle. Quelle est la meilleure façon de gérer la situation où l'enregistrement importé a la même valeur Nom que celle déjà dans la base de données? Dois-je vérifier pour cela avant d'appeler enregistrer? Comment? Devrais-je attraper une exception? À quoi ressemblerait le code?
EDIT: Si un enregistrement existe déjà dans la base de données avec le même champ de nom, je voudrais quand même mettre à jour les autres champs. Par exemple, si j'importais Fred, 43 et il y avait déjà un record Fred, 42 dans la DB, il devrait mettre à jour la DB à Fred, 43.
EDIT: Merci pour toutes les réponses. Cette approche, pointée par chefsmart, est celui que je pense que je vais aller avec:
try:
obj = Person.objects.get(name=name)
except Person.DoesNotExist:
obj = Person()
obj.name = name
obj.age = age
obj.save()
Une solution naïve serait d'obtenir une liste de noms à l'avance et de vérifier: si nom dans name_list: faites le save(). Je ne sais pas si c'est le meilleur. –