Bonjour à tous,
Je dois transformer des scripts python qui créent, remplissent, modifient, exploitent les informations de tables innodb sous mysql pour que ça fasse la même chose sur un cluster qui n'a que sqlite
Ensuite je rapatrierai les tables remplies sur le cluster dans mon mysql .
J'ai donc commencé à faire une pettite fonction pour traduire le mysql en slite:
re.sub( motif_a_enlever , motif_a_placer, phrase_à_tester)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 def convert_script(self): script_sqlite = nom_script_mysql[:-3] + "_sqlite.py" _fichier(nom_script_sqlite, "w").cree_fichier() ligne_finale = "" for ligne in lit_fichier_r(script_mysql) : if "CONSTRAINT" in ligne or "ENGINE" in ligne or "CHARSET" in ligne : continue if "#" not in ligne: # Changement du nom des types : ligne = re.sub("TINYINT|SMALLINT|MEDIUMINT|INT|BIGINT",' INTEGER', ligne) ligne = re.sub("DECIMAL|FLOAT|DOUBLE",' REAL', ligne) ligne = re.sub("CHAR|VARCHAR",' TEXT', ligne) ligne = re.sub("NONE",' NULL', ligne) # Suppression des motifs suivants ligne = re.sub ("DEFAULT [0-9]+",'',ligne) ligne = re.sub ("\([0-9]+\)",'',ligne) ligne = re.sub ("NOT NULL |UNSIGNED |AUTO_INCREMENT ",'',ligne) ligne = re.sub ("DEFAULT \\\\\".+\\\\\"",'',ligne) ligne = re.sub ("DEFAULT \\\\\'.+\\\\\'",'',ligne) ligne = re.sub ("COMMENT \\\\\".+\\\\\"",'',ligne) ligne = re.sub ("COMMENT \\\\\'.+\\\\\'",'',ligne) ligne = re.sub (" ,| ,| ,",',',ligne) if ")" in ligne and "(" not in ligne: ligne_finale = ligne_finale[:-2]+ "\n"+ ligne else : ligne_finale += ligne _fichier(script_sqlite, "a").ecrit_fichier(ligne_finale)
sert à remplacer un motif par un autre ds une phrase.
mais je ne comprends même pas ce qu'il faut que je change concretement.
La seule chose qui est claire c'est le changement de nom des types et du "none" qui devient "null"
Tout le reste je ne comprends pas s'il faut le garder ou pas et sous quelle forme...
Parce qu'il y a le probleme des cles primaires , des cles etrangeres, les updates et les deletes on cascade, les indexes les constraint,
tout ce qui est
NOT NULL , UNSIGNED ,AUTO_INCREMENT
DEFAULT [0-9],
([0-9])
COMMENT
...
Tout ça, ça devient quoi?
Je n'y comprends rien ... ,
C'est supprimé? c'est remplacé? ça reste comme ça?
Les updates en cascade ça se fait qd meme?
j'ai cherché sur les precedents posts qui donnent des liens vers le sqlite...
idem avec google...
Je trouve rien (ou je comprends pas) pour resoudre concretement ces points là...
Si qqn a dejà eu ce probleme pourriez vous me conseiller s'il vous plait ?
Merci d'avance ...
PS :
j'ai posté la meme chose dans la rubrique MySQL
Partager