web-dev-qa-db-ja.com

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:passwd@localhost/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

Whayがこの問題を引き起こしている可能性がありますか?

25
daydreamer

そのようなエラーを生成する方法は次のとおりです。

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

だから、あなたが実際にあなたがいると思うpostgresqlのURLを使用していないと思います-あなたはおそらくデフォルトで生成されたalembic.iniをどこかに呼び出しているでしょう。

41
zzzeek

気付いていない人のために、「default-generated alembic.ini」zzzzeekはプロジェクトのルートディレクトリにあります。

全体の問題は、sqlalchemy.urlファイルでalembic.ini configパラメーターを設定することです。また、 https://stackoverflow.com/a/15668175/97338 で説明されているように、プログラムで設定することもできます。

4
fiatjaf

スキームは実際にはドライバーを指定しませんが、方言:スキームはdialect://またはdialect+driver://の形式です。

たとえば、PostgreSQLデータベースに接続するための正しいURLは、たとえばpostgres://(デフォルトではpsycopg2を使用する)で始まるか、ドライバーを明示的に選択する(postgres+psycopg2://または別のドライバーで) 。

onlypsycopg2を指定した場合、エラーが発生します

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

これらのコマンドを試して、不足しているパッケージをインストールします。

Sudo apt-get install libpq-dev 
Sudo pip install psycopg2 
Sudo pip install redshift-sqlalchemy 
Sudo pip install sqlparse
1
Gilad

Pyinstallerによって生成された.exeで実行するTeradataクエリを取得するには。エンジンを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") 
0
Tyger Guzman