psycopg
次のコードをバージョン 3に基づく同等のコードにアップグレードする必要があります。
import psycopg2
from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg2://', creator=connector)
この psycopg2 URL はうまく機能しましたが、次の点が問題でした。
import psycopg # v3.1
from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg://', creator=connector)
(「psycopg3」という単語も試しましたが、うまくいきませんでした)
戻り値:
Traceback (most recent call last):
File "/tmp/ipykernel_1032556/253047102.py", line 1, in <cell line: 1>
engine = create_engine('postgresql+psycopg://', creator=connector)
File "<string>", line 2, in create_engine
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/util/deprecations.py", line 309, in warned
return fn(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/engine/create.py", line 534, in create_engine
entrypoint = u._get_entrypoint()
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/engine/url.py", line 661, in _get_entrypoint
cls = registry.load(name)
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/util/langhelpers.py", line 343, in load
raise exc.NoSuchModuleError(
NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgresql.psycopg
psycopg
それでは、 (v3.x)に基づいて SQLAlchemy エンジンを適切に作成するにはどうすればよいでしょうか?
私のsqlalchemy
バージョンは「1.4.35」(バージョンを試しました1.4.40
が、AttributeError: module 'sqlalchemy' has no attribute 'dialects'
エラーが発生しました)。
psycopg3 ドキュメント:詳しくはこちら
sqlalchemy ドキュメント:https://docs.sqlalchemy.org/en/14/core/engines.html
ベストアンサー1
現在の回答の更新です: Sqlalchemy 2.0 がリリースされ、psycopg3 をサポートしています。これを使用するには、2.0 にアップグレードする必要があります。
接続文字列を から に変更する必要があることに注意してくださいpostgresql
。変更postgresql+psycopg
しないと、SqlAlchemy は (執筆時点では) を使用することになりますpsycopg2
。
詳細については、こちらのドキュメントをご覧ください:https://docs.sqlalchemy.org/en/20/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg