2011-10-22 26 views
10

Vorrei aprire i dati del sito chromium (in ~/.config/chromium/Default) con python-sqlite3 ma viene bloccato ogni volta che si esegue chromium, il che è comprensibile dal momento che è possibile effettuare transazioni. C'è un modo per aprirlo in modalità di sola lettura, assicurando che non posso corrompere l'integrità del db mentre cromo lo sta usando?È possibile aprire un database sqlite bloccato in modalità di sola lettura?

risposta

3

Chromium detiene un blocco del database per lunghi periodi di tempo? Che schifo! Non è davvero una buona idea. Eppure, non tua colpa ...

Si potrebbe provare semplicemente copiando il file di database (ad esempio, con l'utilità di sistema cp) e utilizzando tale snapshot per scopi di lettura; SQLite mantiene tutto lo stato di commit in un singolo file per database. Sì, c'è la possibilità di vedere una transazione parziale, ma sicuramente non avrai problemi di blocco su Unix dato che SQLite sicuramente non usa i blocchi obbligatori. (Potrebbe non funzionare su Windows a causa del diverso schema di blocco in questo caso.)

+2

Non è necessariamente colpa di cromo. Ficcanaso, ho trovato [questo] (http://mail.python.org/pipermail/python-list/2009-July/1211171.html) un messaggio utile che ha evidenziato che la libreria pysqlite non fornisce un'interfaccia a tutti delle funzionalità di sqlite perché è compatibile con DB-API. Quindi potrebbe essere che quando apro il db con pysqlite, lo sto facendo senza dire in modalità lettura-scrittura. Ha indicato a APSW di utilizzare il flag SQLITE_OPEN_READONLY all'avvio di una connessione. Lo controllerò ora. – ladaghini

Problemi correlati