Relié des bases de donnée sqlite en python
Résolu
rasielblas
Messages postés
143
Statut
Membre
-
rasielblas Messages postés 143 Statut Membre -
rasielblas Messages postés 143 Statut Membre -
Bonjour,
J'ai 3 base de donnée sqlite qui contient chacun des enregistrements, j'aimerais relié ces bases avec python et afficher tous les enregistrements avec une seule requete, ce que je veux c'est faire de la jointure mais pas entre les tables mais cette fois ci avec les bases de données. Voici mon code:
Cordialement,
J'ai 3 base de donnée sqlite qui contient chacun des enregistrements, j'aimerais relié ces bases avec python et afficher tous les enregistrements avec une seule requete, ce que je veux c'est faire de la jointure mais pas entre les tables mais cette fois ci avec les bases de données. Voici mon code:
import sqlite3 import os #Création de la connexion connection1 = sqlite3.connect("mabase1.esd") connection2 = sqlite3.connect("mabase2.esd") connection3 = sqlite3.connect("mabase3.esd") #Création des curseurs cursor1 = connection1.cursor() cursor2 = connection2.cursor() cursor3 = connection3.cursor() #Création des tables def CreateTable_base1(): table_base1_exist='CREATE TABLE Clients(id INTEGER PRIMARY KEY AUTOINCREMENT, Nom TEXT)' if not connection1.execute(table_base1_exist).fetchall(): connection1.execute(table_base1_exist) def CreateTable_base2(): table_base2_exist='CREATE TABLE Fournisseur(id INTEGER PRIMARY KEY AUTOINCREMENT, Nom TEXT)' if not connection2.execute(table_base2_exist).fetchall(): connection2.execute(table_base2_exist) def CreateTable_base3(): table_base3_exist='CREATE TABLE Magasin(id INTEGER PRIMARY KEY AUTOINCREMENT, Nom TEXT)' if not connection3.execute(table_base3_exist).fetchall(): connection3.execute(table_base3_exist) #Ajout d'enregistrement dans la table def AddEntry_base1(): cursor1.execute('INSERT INTO Clients (Id,Nom) VALUES (1,"Jean")') def AddEntry_base2(): cursor2.execute('INSERT INTO Fournisseur (Id,Nom) VALUES (1,"Joseph")') def AddEntry_base3(): cursor3.execute('INSERT INTO Magasin (Id,Nom) VALUES (1,"XTreme")') #Execution des functions try: CreateTable_base1() except: pass AddEntry_base1() try: CreateTable_base2() except: pass AddEntry_base2() try: CreateTable_base3() except: pass AddEntry_base3() connection1.commit() connection2.commit() connection3.commit() #Affichage des résultats de la requete cursor1.execute('SELECT * FROM Clients') cursor2.execute('SELECT * FROM Fournisseur') cursor3.execute('SELECT * FROM Magasin') #Affichage des enregistrements print(cursor1.fetchall()) print(cursor2.fetchall()) print(cursor3.fetchall()) connection1.commit() connection2.commit() connection3.commit() #Fermeture de la connexion connection1.close() connection2.close() connection3.close()
Cordialement,
A voir également:
- Relié des bases de donnée sqlite en python
- Citizen code python avis - Accueil - Outils
- Base de registre - Guide
- Trier des données excel - Guide
- Supprimer les données de navigation - Guide
- Ce programme est écrit en python ✓ - Forum Python
1 réponse
bonjour,
pour réaliser cela, je pense que tu dois te connecter à une seule base.
ensuite, utiliser la commande SQL ATTACH pour ajouter les autres bases à la connexion.
et ensuite tu peux préciser le nom de la db dans les requêtes SQL:
pour réaliser cela, je pense que tu dois te connecter à une seule base.
ensuite, utiliser la commande SQL ATTACH pour ajouter les autres bases à la connexion.
connection1.execute('ATTACH DATABASE mabase2.esd AS db2')
et ensuite tu peux préciser le nom de la db dans les requêtes SQL:
cursor1.execute('SELECT * FROM main.Clients, db2.Fournisseur')
sqlite3.OperationalError: no such table: db2.Fournisseur
Avait vous une idée? car la table fournisseur se trouve bien dans mabase2 mais qu'elle ne trouve pas!
Mais, pourquoi faire plusieurs bases ?
Une base de données est censée contenir toutes les tables ayant des relations, ici alors, il n'y a strictement aucun intérêt à vouloir dissocier chacune de ces tables dans des bases différentes et vouloir agglutiner ça en un résultat.