Django-fr

Forum

#1 18-01-2011 11:13:15

beegees
Membre
Inscription : 26-12-2010
Messages : 66

Mettre à jour le schéma sqlite

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

#2 18-01-2011 11:17:08

Rémy HUBSCHER
Membre
Inscription : 11-08-2010
Messages : 161

Re : Mettre à jour le schéma sqlite

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

#3 18-01-2011 11:21:06

beegees
Membre
Inscription : 26-12-2010
Messages : 66

Re : Mettre à jour le schéma sqlite

Rémy HUBSCHER a écrit :

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

#4 18-01-2011 11:23:46

Rémy HUBSCHER
Membre
Inscription : 11-08-2010
Messages : 161

Re : Mettre à jour le schéma sqlite

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

#5 18-01-2011 11:37:08

beegees
Membre
Inscription : 26-12-2010
Messages : 66

Re : Mettre à jour le schéma sqlite

Rémy HUBSCHER a écrit :

Tu as le nom de la base de données dans le fichier settings.py c'est un chemin vers le fichier.

OK


Rémy HUBSCHER a écrit :

Pour la supprimer tu supprimes simplement le fichier

OK


Rémy HUBSCHER a écrit :

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

#6 18-01-2011 12:14:10

Romain
Membre
Inscription : 11-08-2010
Messages : 27

Re : Mettre à jour le schéma sqlite

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 smile

Hors ligne

#7 18-01-2011 12:28:17

Chamal
Membre
Inscription : 11-08-2010
Messages : 17

Re : Mettre à jour le schéma sqlite

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

#8 18-01-2011 13:19:37

beegees
Membre
Inscription : 26-12-2010
Messages : 66

Re : Mettre à jour le schéma sqlite

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

#9 18-01-2011 13:21:26

Rémy HUBSCHER
Membre
Inscription : 11-08-2010
Messages : 161

Re : Mettre à jour le schéma sqlite

Essaye : http://localhost:8000/admin

Dernière modification par Rémy HUBSCHER (18-01-2011 13:22:48)

Hors ligne

#10 18-01-2011 13:24:23

beegees
Membre
Inscription : 26-12-2010
Messages : 66

Re : Mettre à jour le schéma sqlite

Rémy HUBSCHER a écrit :

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

Pied de page des forums