Passer de mysql a sqlite3

Bonjour,
j’ai fait un logiciel qui fonctionne très bien en Mysql avec xampp, je voudrais passé avec sqlite3 pour simplifier le démarrage, sans avoir a démarré xampp, j’ai importe la bdd en sql , j’ai créé une nouvelle bdd avec DB Browser, j’ai créé une bdd avec python ça ne fonctionne pas. il trouve la bdd mais il ne peut pas la lire. Comme je début en python (quatre mois seul) . Quelqu’un pourrait t’il m’aidai.
cordialement kyrob

Il existe un script mysql2sqlite.sh sur GitHub

Comme décrit dans l’en-tête, le script peut être utilisé comme ceci :

./mysql2sqlite.sh database_name | sqlite3 database.sqlite

Ou bien, il existe un outil Python simple pour transférer des données de MySQL à SQLite 3. Il peut être invoqué via la ligne de commande CMD.

pip install mysql-to-sqlite3
mysql2sqlite --help

Voir la doc: mysql-to-sqlite3 · PyPI

On ne peut pas convertir tous les schémas de bases de données. MySQL est plus complexe et plus riche en fonctionnalités que SQLite. Cependant, si votre schéma est assez simple, vous pouvez l’exporter sous forme de fichier SQL et essayer de l’importer/le charger dans une BD SQLite.

Après avoir exporter votre base de données MySQL dans un fichier SQL, vous pouvez utiliser ce script pour la convertir en SQLite GitHub - dumblob/mysql2sqlite: Converts MySQL dump to SQLite3 compatible dump (comme mentionné dans la réponse de @Isaac).

La façon la plus simple de convertir une base de données MySql en Sqlite :

  1. Générez le fichier .sql pour votre base de données MySql.

  2. Téléchargez le fichier vers le convertisseur en ligne RebaseData ici en cliquant sur Choose the .SQL file puis sur le bouton Convert.

  3. Un bouton de téléchargement apparaîtra sur la page pour télécharger la base de données au format Sqlite.

Pour commencer, vous avez besoin de ce script (mettez-le dans un fichier appelé
‹ mysql-to-sqlite.sh ›)

#!/bin/bash
if [ "x$1" == "x" ]; then
  echo "Usage: $0 <dumpname>"
  exit
fi

cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
sed 's/\\r\\n/\\n/g' |
sed 's/\\"/"/g' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
if (/^(INSERT.+?)\(/) {
  $a=$1;
  s/\\'\''/'\'\''/g;
  s/\\n/\n/g;
  s/\),\(/\);\n$a\(/g;
}
' > $1.sql
cat $1.sql | sqlite3 $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
  echo "La conversion s est achevée sans erreur. Fichier de sortie: $1.db"
  rm $1.sql
  rm $1.err
else
  echo "Il y a eu des erreurs pendant la conversion. Veuillez vérifier $1.err et $1.sql pour plus de détails."
fi

Ensuite, faites une copie de votre base de données via la ligne de commande CMD:

mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile

Et maintenant, lancez la conversion :

mysql-to-sqlite.sh dumpfile

Et si tout va bien, vous devriez maintenant avoir un dumpfile.db qui peut être utilisé via sqlite3.

sqlite3 dumpfile.db 

Bonjour Isaac,
je vais étudier a tête reposer car je ne connait pas l’anglais, je vais traduire avec ‹ Google Traduction ›, la bdd est pas très importante par elle-même, elle ne contenaient pas grand chose, ça me gêne pas de la refaire :
voici un extrait l’erreur ce trouve a la fin de la 3 lignes après la virgule (il y a un espace avant self)

con = sqlite3.connect("C:/Users/jacky/creer.db")
cur = con.cursor()
cur.execute("SELECT * FROM compte WHERE email= ?",self.txt_email.get())
row = cur.fetchone()

cordialement kyrob

Bonjour Michel,
je vais étudier a tête reposer car je ne connait pas l’anglais, je vais traduire avec ‹ Google Traduction ›, la bdd est pas très importante par elle-même, elle ne contenaient pas grand chose, ça me gêne pas de la refaire :
voici un extrait l’erreur ce trouve a la fin de la 3 lignes après la virgule (il y a un espace avant self)

con = sqlite3.connect("C:/Users/jacky/creer.db")
cur = con.cursor()
cur.execute("SELECT * FROM compte WHERE email= ?",self.txt_email.get())
row = cur.fetchone()

cordialement kyrob

Bonjour Jacques,
je vais étudier a tête reposer car je ne connait pas l’anglais, je vais traduire avec ‹ Google Traduction ›, la bdd est pas très importante par elle-même, elle ne contenaient pas grand chose, ça me gêne pas de la refaire :
voici un extrait l’erreur ce trouve a la fin de la 3 lignes après la virgule (il y a un espace avant self)

con = sqlite3.connect("C:/Users/jacky/creer.db")
cur = con.cursor()
cur.execute("SELECT * FROM compte WHERE email= ?",self.txt_email.get())
row = cur.fetchone()

cordialement kyrob

cur.execute("SELECT * FROM compte WHERE email= ?",self.txt_email.get())

est dû à l’utilisation de self. Vous devez lire comment utiliser les classes, mais en bref, self est la façon dont une instance d’objet se réfère à elle-même. Vous ne faites pas référence à self en dehors de l’objet.

Utilisez plutôt:

cur.execute("SELECT * FROM compte WHERE email = ?", [self.txt_email.get()])

mais vous deverez vérifier si self.txt_email.get() renvoie une résultat en dehors de la classe

1 « J'aime »

Essayez la ligne de code suivant:

cur.execute("SELECT * FROM compte WHERE email = ?", (self.txt_email.get(),))

cursor.execute() attend une séquence (liste, tuple) comme 2ème paramètre.

rebonjour Michel,
Avec les crochets ça marche, mais pour cette ligne : cur.execute("select * from compte where email=%s and question=%s and reponse=%s", (self.txt_email.get(), self.ecri_question.get(), self.ecri_repondre.get()))

ça fonctionne, pas j’ai essaye plusieurs tests merci pour l’aide apportée
cordialement kyrob

Avez-vous essayez:
cur.execute("SELECT * FROM compte WHERE email = ? AND question = ? AND reponse = ?", [self.txt_email.get(), self.ecri_question.get(), self.ecri_repondre.get()])

Bonjour Michel,
Je tien a vous remerciez pour les crochets qui fonctionne et Henri les pour les parenthèses, merci encore a vous deux. Mon logiciel fonctionne aussi bien que l’autre sous xampp.
cordialement a vous deux
kyrob

1 « J'aime »

Bonjour Henri,
Je tien a vous remerciez Michel pour les crochets qui fonctionne et Henri les pour les parenthèses, merci encore a vous deux. Mon logiciel fonctionne aussi bien que l’autre sous xampp.
cordialement a vous deux
kyrob

1 « J'aime »