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:
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,
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.