python - query - heroku flask postgres
sqlalchemy.exc.ArgumentError: No se puede cargar el complemento: sqlalchemy.dialects: driver (4)
Aquí es cómo producir un error como ese:
>>> from sqlalchemy import *
>>> create_engine("driver://")
Traceback (most recent call last):
... etc
sqlalchemy.exc.ArgumentError: Can''t load plugin: sqlalchemy.dialects:driver
así que yo diría que en realidad no estás usando la URL postgresql que crees que estás; probablemente estés invocando un alembic.ini generado de forma predeterminada en algún lugar.
Estoy tratando de ejecutar la migración alembic
y cuando ejecuto
alembic revision --autogenerate -m "Added initial tables"
Falla diciendo
sqlalchemy.exc.ArgumentError: Can''t load plugin: sqlalchemy.dialects:driver
la url de la base de datos es
postgresql+psycopg2://dev:passwd@localhost/db
e incluso tengo psycopg2
instalado en mi virtualenv
$yolk -l
Flask-Login - 0.1.3 - active
Flask-SQLAlchemy - 0.16 - active
Flask - 0.9 - active
Jinja2 - 2.6 - active
Mako - 0.7.3 - active
MarkupSafe - 0.15 - active
Python - 2.7.2 - active development (/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload)
SQLAlchemy - 0.8.0 - active
Werkzeug - 0.8.3 - active
alembic - 0.4.2 - active
antiorm - 1.1.1 - active
appscript - 1.0.1 - active
distribute - 0.6.27 - active
envoy - 0.0.2 - active
osascript - 0.0.4 - active
pep8 - 1.4.5 - active
pip - 1.1 - active
psycopg2 - 2.4.6 - active
wsgiref - 0.1.2 - active development (/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7)
yolk - 0.4.3 - active
¿Qué podría estar causando este problema?
Intente esos comandos para instalar los paquetes que faltan:
sudo apt-get install libpq-dev
sudo pip install psycopg2
sudo pip install redshift-sqlalchemy
sudo pip install sqlparse
Observe que el esquema no especifica realmente el controlador, sino el dialecto : el esquema es de forma dialect://
o dialect+driver://
.
Por ejemplo, las direcciones URL correctas para conectarse a una base de datos PostgreSQL comenzarían con, por ejemplo, postgres://
(que de manera predeterminada usa psycopg2
), o elegir un controlador explícitamente ( postgres+psycopg2://
, o con otro controlador).
Si le psycopg2
especificar solo psycopg2
obtendrá el error
sqlalchemy.exc.NoSuchModuleError: Can''t load plugin: sqlalchemy.dialects:psycopg2
Para aquellos que no lo han notado, el "alembic.ini generado por defecto" al que se refiere zzzzeek se encuentra en el directorio raíz del proyecto.
Todo el problema es configurar el parámetro de configuración sqlalchemy.url
en el archivo alembic.ini
. Además, se puede configurar mediante programación como se explica en https://.com/a/15668175/973380 .