Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
sauvegarde_script_sql [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


sauvegarde_script_sql

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sauvegarde_script_sql [2014/04/08 10:05]
tyrtamos
sauvegarde_script_sql [2014/04/08 10:22]
tyrtamos
Ligne 1: Ligne 1:
-====== Sauvegarde et restauration sous forme de script SQL ======+====== Sauvegarde restauration sous forme de script SQL ======
  
-[en cours de modification le 8/4/2014]+[modification le 8/4/2014: refonte complète de la page]
  
 ===== Solution de base ===== ===== Solution de base =====
Ligne 164: Ligne 164:
 </code> </code>
  
-Qui devient:+qui devient:
  
 <code python> <code python>
Ligne 174: Ligne 174:
 Autre problème, mais cette fois-ci avec cx_freeze pour Python 2.7 (pas de problème avec Python 3):  Autre problème, mais cette fois-ci avec cx_freeze pour Python 2.7 (pas de problème avec Python 3): 
  
-Alors que sans cx_freeze, les lignes de script retournées par iterdump sont correctement encodées, avec cx_freeze, les caractères accentués des données fournissent des erreurs d'encodage!+Alors que sans cx_freeze, les lignes de script retournées par "iterdumpsont correctement encodées, avec cx_freeze, les caractères accentués des données fournissent des erreurs d'encodage!
  
 En fait, alors que les données lues dans les tables sont en unicode, ce n'est pas le cas des lignes de script retournées par iterdump. En fait, alors que les données lues dans les tables sont en unicode, ce n'est pas le cas des lignes de script retournées par iterdump.
  
-La correction est évidente: dans toutes les lignes du fichier dump.py qui contiennent un "yield(....)", ajouter un 'u' devant les guillemets. Mais on peut faire plus simle: ajouter au tout début de la page dump.py la ligne:+La correction est évidente: dans toutes les lignes du fichier dump.py qui contiennent un "yield(....)", ajouter un 'u' devant les guillemets. Mais on peut faire plus simple: ajouter au tout début de la page "dump.pyla ligne:
  
 <code python> <code python>
Ligne 309: Ligne 309:
 Au lieu d'utiliser la méthode python "executescript" qui exécute tout d'un seul coup, on utilise "execute" qui exécutera une à une chacune des requêtes. Au lieu d'utiliser la méthode python "executescript" qui exécute tout d'un seul coup, on utilise "execute" qui exécutera une à une chacune des requêtes.
  
-Par ailleurs, il faut retrouver les requêtes complètes pour les exécuter, car elles peuvent être présentées en plusieurs lignes. Il y a une méthode intéressante pour ça, qui s'appelle "complete_statement":+Par ailleurs, il faut retrouver les requêtes complètes pour les exécuter, car elles peuvent être présentées en plusieurs lignes. Il y a une méthode intéressante pour ça, qui s'appelle "complete_statement". 
 + 
 +Enfin, puisque c'est un test de déverminage, la base crée est une base en mémoire (":memory:"). Si la base ne tient pas en mémoire, vous pouvez prendre un nom de base sur le disque.
  
 <code python> <code python>
Ligne 387: Ligne 389:
 </code> </code>
  
-Si, par exemple, la requête numéro 8000 déclenche une erreur, voilà le message affiché:+Si, par exemple, la requête numéro 805 (ligne 884) déclenche une erreur, voilà le message affiché:
  
 <code> <code>
 num ligne: 884; num requête: 805; Erreur: foreign key constraint failed; requête:  num ligne: 884; num requête: 805; Erreur: foreign key constraint failed; requête: 
-INSERT INTO "auteurs" VALUES('IO',137,'Tyrtamos','Albert','ILANDE','EFIAP, ARPS, AIPF','',0,20,0,'','Drumgoolan','','','LOUTH VILLAGE','DUNDALK CO LOUTH','IRLANDE','');+INSERT INTO "auteurs" VALUES('IO',137,'TYRTAMOS','Albert','ILANDE','','',0,20,0,'','Xxxxxxxx','','','LOUTH VILLAGE','DUNDALK CO LOUTH','IRLANDE','');
 </code> </code>
  
-Il y a une faute de frappe sur le nom de pays ("ILANDE" au lieu de "IRLANDE", et ce nom doit obligatoirement appartenir à une table des noms de pays avec une contrainte de clé étrangère.+Il y a une faute de frappe sur le nom de pays ("ILANDE" au lieu de "IRLANDE"), et ce nom devrait obligatoirement appartenir à une table des noms de pays avec une contrainte de clé étrangère.
  
-Vous avez vu aussi que, puisque c'est un test de déverminage, la base crée est une base en mémoire (":memory:"). Si la base ne tient pas en mémoire, vous pouvez prendre un nom de base sur le disque. 
  
 \\ \\
sauvegarde_script_sql.txt · Dernière modification: 2014/04/08 10:22 de tyrtamos