2011-09-04 15 views
18

Intentando formatear una base de datos con SQLAlchemy, pero cuando ejecuto create_all en los metadatos, aparece el error anterior. He creado el motor utilizando la siguiente ruta de acceso para el usuario Tyre77:OperationalError: (OperationalError) no se puede abrir el archivo de base de datos Ninguno Ninguno

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

He caminado a través y hay un archivo 'database.db' en ese camino, pero quizás he escrito mal?

+0

De su pregunta, no estoy seguro si está usando windows o unix como el sistema operativo. Si está en Linux, parece que tiene demasiados/caracteres después del archivo: si está en Windows, ¿ha intentado utilizar un archivo en el disco local? –

+0

@Carl lo siento, estoy ejecutando OS X Lion y debería ser una ruta local – Chris

+0

Creo que tienes demasiadas barras. Debería haber tres. –

Respuesta

31

Menciona que es una ruta de acceso para el usuario tyre77 en OS X, ¿no debería ser sqlite:////Users/tyre77/OmniCloud/database.db?

Además, tres barras inclinadas para rutas relativas, cuatro para rutas absolutas.

1

Después de leer los documentos en las URL de sqlite here, decidí que tiene el número correcto de barras diagonales. Aparentemente, utiliza el mismo analizador para extraer el camino como los motores de conexión remota, por lo que el "nombre del servidor" que iría entre la segunda y la tercera barra se deja en blanco.

Si desea especificar una ruta absoluta, la está haciendo de la manera correcta. Verifique para asegurarse de que está proporcionando un camino absoluto. Tres barras pueden ser capaces de especificar una ruta relativa, pero necesita conocer el directorio de trabajo actual de su aplicación, que podría romperse cuando retrase su aplicación.

+0

En el ejemplo, muestran la ruta sqlite: ///: memory: ... entonces, ¿no debería haber otra barra para comenzar el directorio raíz? – Chris

+0

Creo que la memoria es un caso especial, así que no lo usaría como ejemplo. –

1

Tuve el mismo problema en Windows 8.1. Sobre la base de la documentación sqlalchemy:

sqlite:////db_absolute_path 

sqlite:///db_relative_path 

(notar que la segunda línea anterior tiene sólo 3 barras) En mi caso proporcionando ruta relativa ayudó.

Cuestiones relacionadas