Sqlalchemy.exc.ArgumentError: невозможно загрузить плагин: sqlalchemy.dialects: driver

Я пытаюсь запустить миграцию alembic и при запуске

alembic revision --autogenerate -m "Added initial tables"

Не получается сказать

sqlalchemy.exc.ArgumentError: Can't load plugin: sqlalchemy.dialects:driver

URL-адрес базы данных

postgresql+psycopg2://dev:[email protected]/db

и у меня даже есть psycopg2, установленный в моем 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

Может ли быть причиной этой проблемы?

Ответы

Ответ 1

Здесь, как создать такую ​​ошибку:

>>> from sqlalchemy import *
>>> create_engine("driver://")
Traceback (most recent call last):
... etc
sqlalchemy.exc.ArgumentError: Can't load plugin: sqlalchemy.dialects:driver

поэтому я бы сказал, что вы на самом деле не используете URL-адрес postgresql, который, по вашему мнению, вы есть, вы, вероятно, вызываете созданный по умолчанию файл alembic.ini.

Ответ 2

Для тех, кто этого не заметил, "созданный по умолчанию alembic.ini" zzzzeek относится к корневому каталогу проекта.

Вся проблема заключается в установке параметра конфигурации sqlalchemy.url в файле alembic.ini. Кроме того, он может быть установлен программно, как описано в fooobar.com/questions/350782/....

Ответ 3

Обратите внимание, что схема фактически не указывает драйвер, а диалект: схема имеет форму dialect:// или dialect+driver://.

Например, правильные URL-адреса для подключения к базе данных PostgreSQL начинаются, например, с помощью postgres:// (который по умолчанию использует psycopg2) или явно выбирает драйвер (postgres+psycopg2:// или с другим драйвером).

Если вы указали только psycopg2, вы получите сообщение об ошибке

sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:psycopg2

Ответ 4

Попробуйте эти команды для установки отсутствующих пакетов:

sudo apt-get install libpq-dev 
sudo pip install psycopg2 
sudo pip install redshift-sqlalchemy 
sudo pip install sqlparse

Ответ 5

Чтобы запустить запросы Teradata на .exe, созданном Pyinstaller. Я изменил свой движок с SQLAlchemy на Teradata

От:

import sqlalchemy as sa
user, pasw, hostname = UserName,Password, 'myurl.com'
# connect
td_engine = sa.create_engine('teradata://{}:{}@{}:22/'.format(user,pasw,hostname),echo=True)
df = pd.read_sql_query(query1,connect)

Для того, чтобы:

import teradata
user, pasw, hostname = UserName,Password, 'myurl.com'
td = teradata.UdaExec (appName="test", version="1.0", logConsole=True)
td_engine = td.connect(method="odbc",system=hostname, username=user,password=pasw,driver="Teradata")