Sqlite3.OperationalError: too many attached databases - max 10
Résolu/Fermé
rasielblas
Messages postés
135
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
12 mai 2021
-
30 sept. 2019 à 10:22
rasielblas Messages postés 135 Date d'inscription jeudi 20 mars 2014 Statut Membre Dernière intervention 12 mai 2021 - 9 oct. 2019 à 07:56
rasielblas Messages postés 135 Date d'inscription jeudi 20 mars 2014 Statut Membre Dernière intervention 12 mai 2021 - 9 oct. 2019 à 07:56
A voir également:
- Sqlite3.OperationalError: too many attached databases - max 10
- Lister tables sqlite3 dans combobox - tkinter - python - Forum Python
- OperationalError: table users has no column named prenom - Forum Python
2 réponses
Bonjour.
J'ai fait quelques recherches, dans l'api sqlite de python, il y a bien une méthode Connection.set_limit, malheureusement celle-ci n'est disponible qu'avec les bonnes options fournies lors de la compilation de sqlite...
Mais quel intérêt de vouloir aggréger autant de bases ?
Tu pourrais les attacher, faire tes manipulations, puis les détacher.
J'ai un peu testé, et ça fonctionne très bien.
En prenant pour pseudo base ce que tu as effectué dans ton précédent sujet, voici un simple exemple (nécessite un répertoire "databases").
J'ai fait quelques recherches, dans l'api sqlite de python, il y a bien une méthode Connection.set_limit, malheureusement celle-ci n'est disponible qu'avec les bonnes options fournies lors de la compilation de sqlite...
Mais quel intérêt de vouloir aggréger autant de bases ?
Tu pourrais les attacher, faire tes manipulations, puis les détacher.
J'ai un peu testé, et ça fonctionne très bien.
En prenant pour pseudo base ce que tu as effectué dans ton précédent sujet, voici un simple exemple (nécessite un répertoire "databases").
import sqlite3 def create_table(db_name, values): con = sqlite3.connect("./databases/%s.db" % db_name) cur = con.cursor() cur.execute( '''CREATE TABLE fournisseurs( id INTEGER PRIMARY KEY AUTOINCREMENT, nom TEXT )''' ) s = ','.join(('(?)',) * len(values)) cur.execute('INSERT INTO fournisseurs(nom) VALUES %s' % s, values) con.commit() con.close() def tables_dif(main_db_name, *db_names): con = sqlite3.connect(":memory:") con.execute("ATTACH DATABASE './databases/%s.db' AS main_db" % main_db_name) cur = con.cursor() res = {} for db_name in db_names: con.execute("ATTACH DATABASE './databases/%s.db' AS db" % db_name) sql = ''' SELECT t2.id, t2.nom FROM db.fournisseurs as t2 LEFT JOIN main_db.fournisseurs as t USING(nom) WHERE t.nom IS NULL ''' cur.execute(sql) res[db_name] = cur.fetchall() con.execute("DETACH DATABASE db") con.close() return res try: create_table('main', ('jojo', 'mimi', 'riri')) create_table('base1', ('jojo', 'riri', 'vévé')) create_table('base2', ('riri', 'lulu')) except: pass print(tables_dif('main', 'base1', 'base2'))
yg_be
Messages postés
23306
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 novembre 2024
Ambassadeur
1 550
30 sept. 2019 à 16:33
30 sept. 2019 à 16:33
bonjour, tu atteins la limite avec 2 bases?
rasielblas
Messages postés
135
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
12 mai 2021
9
2 oct. 2019 à 07:43
2 oct. 2019 à 07:43
Bonjour! non, ceci est une exemple mais j'ai plusieurs bdd!
2 oct. 2019 à 07:43
8 oct. 2019 à 13:10
8 oct. 2019 à 14:33
9 oct. 2019 à 07:56