J'aimerais exécuter un script pour alimenter ma base de données. J'aimerais y accéder via l'API de base de données de Django.
Le seul problème est que je ne sais pas ce que je devrais importer pour y avoir accès.
Comment y parvenir ?
J'aimerais exécuter un script pour alimenter ma base de données. J'aimerais y accéder via l'API de base de données de Django.
Le seul problème est que je ne sais pas ce que je devrais importer pour y avoir accès.
Comment y parvenir ?
C'est ce que j'ai en haut d'un de mes scripts de chargement de données scripts.
import string
import sys
try:
import settings # Assumed to be in the same directory.
#settings.DISABLE_TRANSACTION_MANAGEMENT = True
except ImportError:
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
sys.exit(1)
#Setup the django environment with the settings module.
import django
import django.core.management
django.core.management.setup_environ(settings)
from django.db import transaction
Tout ceci doit être exécuté avant que vous ne fassiez quoi que ce soit d'autre dans votre script.
Une autre méthode consiste à utiliser les fixtures et manage.py. Si vous essayez simplement d'effectuer un chargement de données en masse pour initialiser une base de données, cela devrait fonctionner correctement.
De plus, selon ce que vous faites, vous pouvez ou non vouloir tout faire en une seule transaction. Décommentez la ligne de transaction ci-dessus et structurez votre code de la manière suivante.
transaction.enter_transaction_management()
try:
#Do some stuff
transaction.commit()
finally:
transaction.rollback()
pass
transaction.leave_transaction_management()
Si vous utilisez le shell
à l'argument manage.py
script dans le répertoire de votre projet, vous n'avez pas besoin d'importer les paramètres manuellement :
$ cd mysite/
$ ./manage.py shell
Python 2.5.2 (r252:60911, Jun 10 2008, 10:35:34)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from myapp.models import *
>>>
Pour une utilisation non interactive, vous pourriez mettre en œuvre un commande personnalisée et l'exécuter avec manage.py
.
La solution la plus propre est d'ajouter des extensions django.
(virt1)tsmets@calvin:~/Documents/prive/rugby-club/proposal/kitu$ yolk -l
Django - 1.3.1 - active
Pygments - 1.4 - active
Python - 2.6.5 - active development (/usr/lib/python2.6/lib-dynload)
django-extensions - 0.7.1 - active
pip - 1.0.2 - active
setuptools - 0.6c11 - active
wsgiref - 0.1.2 - active development (/usr/lib/python2.6)
yolk - 0.4.1 - active
La liste des commandes possibles est ensuite complétée, entre autres, par la commande runscript.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.