2011-09-04 25 views
18

Provare a formattare un database utilizzando SQLAlchemy ma quando eseguo create_all sui metadati, ottengo l'errore sopra riportato. Ho creato il motore utilizzando il seguente percorso per l'utente Tyre77:OperationalError: (OperationalError) impossibile aprire il file di database Nessuno Nessuno

engine = create_engine('sqlite:////tyre77/OmniCloud/database.db') 

Ho camminato attraverso e c'è un file 'database.db' in quel percorso, ma forse ho digitato male?

+0

Dalla tua domanda, non sono chiaro se stai usando windows o un sistema unix come os. Se sei su Linux, sembra che tu abbia uno o più caratteri dopo il file: se sei su Windows, hai provato a usare un file sul disco locale? –

+0

@Carl scusate, io sono in esecuzione OS X Lion e quello dovrebbe essere un percorso locale – Chris

+0

Penso che tu abbia una troppa barra. Ci dovrebbero essere tre. –

risposta

31

Si dice che è un percorso per utente tyre77 su OS X, quindi non dovrebbe essere quello sqlite:////Users/tyre77/OmniCloud/database.db?

Inoltre, tre barre per percorsi relativi, quattro per percorsi assoluti.

1

Dopo aver letto i documenti sugli URL sqlite here, ho deciso di avere il giusto numero di barre. Apparentemente, utilizza lo stesso parser per estrarre il percorso come motori di connessione remota, quindi il "nome del server" che andrebbe tra la seconda e la terza barra viene lasciato vuoto.

Se si desidera specificare un percorso assoluto, si procede nel modo giusto. Assicurati di fornire un percorso assoluto. Tre barre possono essere in grado di specificare un percorso relativo, ma è necessario conoscere la directory di lavoro corrente della tua app, che potrebbe rompersi quando si ritarda la tua app.

+0

Nell'esempio, mostrano il percorso sqlite: ///: memoria: ... quindi non dovrebbe esserci un'altra barra per iniziare la directory radice? – Chris

+0

Credo che la memoria sia un caso speciale, quindi non la userei come esempio. –

1

Ho avuto lo stesso problema in Windows 8.1. Sulla base di documentazione sqlalchemy:

sqlite:////db_absolute_path 

sqlite:///db_relative_path 

(notare che la seconda linea di cui sopra ha solo 3 barre) Nel mio caso fornendo percorso relativo aiutato.

Problemi correlati