2011-10-04 18 views
6

Estoy probando Heroku con Python, ejecuté el "hello word" example with Flask con éxito.importa sqlite3 con Python2.7 en Heroku

Ahora quiero implementar una aplicación muy básica, usando sqlite3 y Flask, y sé que la aplicación estaba funcionando. Pero tengo problemas para hacer que funcione, y sospecho que el problema es con sqlite.

cuando empecé la terminal de Python que proporciona Heroku, aquí el registro de errores de importación:

$ heroku run python  
Running python attached to terminal... up, run.2 
Python 2.7.1 (r271:86832, Jun 26 2011, 01:08:11) 
[GCC 4.4.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sqlite3 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/sqlite3/__init__.py", line 24, in <module> 
    from dbapi2 import * 
    File "/usr/local/lib/python2.7/sqlite3/dbapi2.py", line 27, in <module> 
    from _sqlite3 import * 
ImportError: No module named _sqlite3 
>>> 

¿Es necesario añadir algo a la requirements.txt, el archivo utilizado para las dependencias? Solo contiene Flask==0.8 hasta el momento. Importar fecha y hora en ejemplos funciona como se esperaba. Miré con heroku logs y este mensaje aparece también, sin ningún otro mensaje importante.

¿Tengo alguna forma de utilizar algunos sqlite3 en Heroku? Gracias por ayuda.

Respuesta

1

Esto no es posible en Heroku, ya que sqlite requiere un sistema de archivos de escritura permanente. Como Heroku no proporciona un sistema de archivos de escritura permanente, sqlite3 no funcionará.

Algo a tener en cuenta: Heroku es un entorno distribuido. Esto significa que una aplicación puede ejecutarse en muchas máquinas dentro de muchos procesos. En su caso, esto generaría múltiples instancias sqlite3 (cada una ejecutada localmente), si estuviera permitido.

También, ver: Heroku Devcenter - Read-only Filesystem

+0

Gracias, realmente pensaba que era posible con Ruby on Rails, pero parece que no lo hace cualquiera. Voy a usar PostgreSQL entonces. –