Vous n'êtes pas identifié(e).
Bonjour tout le monde,
J'ai ajouté un champ dans mon modèle :
size = models.CharField('Size',max_length=3,null=True,blank=True)
J'aimerais savoir comment je peux mettre à jour le schéma de ma BDD (sqlite) ?
Merci d'avance.
Hors ligne
Ce n'est pas possible avec SQLite.
Soit tu recréée le schéma et tu remets tes données, soit tu passes à MySQL pour pouvoir modifier le schéma par la suite.
Hors ligne
Ce n'est pas possible avec SQLite.
Soit tu recréée le schéma et tu remets tes données, soit tu passes à MySQL pour pouvoir modifier le schéma par la suite.
Merci pour ta réponse Rémy.
Je vais recréer ma db.
1) je la recrée avec syncb ?
2) comment puis-je la supprimer ?
Merci pour ton aide précieuse et appréciée.
Hors ligne
Tu as le nom de la base de données dans le fichier settings.py c'est un chemin vers le fichier.
Pour la supprimer tu supprimes simplement le fichier pour sauvegarder les données tu peux utiliser la commande dumpdata.
Ensuite pour la recréer, tu peux utiliser syncdb avec le fichier initial_data.FORMAT généré à partir de dumpdata.
Tu peux avoir plusieurs formats : JSON, YAML, XML ... http://docs.djangoproject.com/en/dev/to … on-formats
Plus d'infos sur dumpdata : http://docs.djangoproject.com/en/dev/re … name-model
Bon courage.
Hors ligne
Tu as le nom de la base de données dans le fichier settings.py c'est un chemin vers le fichier.
OK
Pour la supprimer tu supprimes simplement le fichier
OK
pour sauvegarder les données tu peux utiliser la commande dumpdata.
J'ai donc utilisé cette commande dans la fenêtre cmd de Windows (DOS).
J'ai tapé cette commande :
python manage.py dumpdate > c:\schema.xml
J'obtiens donc un fichier xml dans la racine du C qui contient le schéma.
Jusque là, est-ce correct ?
Merci pour ton aide.
Hors ligne
Le 18 janv. 2011 à 11:13, beegees a écrit :
> Bonjour tout le monde,
>
> J'ai ajouté un champ dans mon modèle :
>
>
size =
> models.CharField('Size',max_length=3,null=True,blank=True)
>
> J'aimerais savoir comment je peux mettre à jour le schéma de ma BDD
> (sqlite) ?
ALTER TABLE table ADD COLUMN champ [type] [options];
e.g. ALTER TABLE ma_table ADD COLUMN size VARCHAR(3)
tu peux aussi rajouter un DEFAULT=""
tu peux récupérer la définition de champ avec "python manage.py sql [ton_modele]"
Ca fonctionne sur les versions récentes de Sqlite3. Pour de plus vieilles versions, il fallait parfois passer par une table intermédiaire :
1) création de la table intermédiaire avec les mêmes champs que la table d'origine
2) copie des données de la table d'origine vers l'intermédiaire (INSERT INTO temp_table(champ1, champ2, ...) SELECT champ1, champ2... FROM orig_table)
3) suppression de la table d'origine (DROP TABLE)
4) recréation de la table d'origine avec le bon schéma (CREATE TABLE)
5) copie des données de la table intermédiaire vers la nouvelle table
C'est plus simple à faire qu'à expliquer
Hors ligne
Le 18 janv. 2011 à 11:17, Rémy HUBSCHER a écrit :
> Ce n'est pas possible avec SQLite.
Si c'est possible, les commandes de type alter table existent en sqlite aussi, mais ne sont pas aussi évoluées que celles d'autres moteurs de SGBDR.
# sqlite3 <tonfichier>
sql> Donc alter table 'tatable' add column size varchar(3) null;
est censée fonctionner.
> Soit tu recréée le schéma et tu remets tes données, soit tu passes à
> MySQL pour pouvoir modifier le schéma par la suite.
Il faut sinon regarder du côté de south qui permet de gérer les migrations des modèles de manière assistée et d'automatiser un peu ce processus souvent considéré comme délicat.
++ Aymeric
ps: la tentation de troller sur mysql est une constante chez moi, j'essaye de me soigner ;-)
Hors ligne
Bonjour et merci à vous tous,
Je recrée donc ma bd avec :
python manage.py syncdb
Le fichier .bd est donc recréé.
Quand je mets ça dans l'URL :
http://localhost:8000/neuro/admin
Page not found (404)
Je suis totalement perdu pour l'instant.
Je vais relire vos postes et revenir vers vous.
Encore merci pour l'aide.
Hors ligne
Essaye : http://localhost:8000/admin
Dernière modification par Rémy HUBSCHER (18-01-2011 13:22:48)
Hors ligne
Essaye : http://localhost:8000/admin
Fallait retirer neuro.
Merci pour ton aide.
Dernière modification par beegees (18-01-2011 13:36:38)
Hors ligne