sqlalchemy.ex.해당 모듈 오류 없음:플러그인을 로드할 수 없습니다. sqlalchemy.dialects:postgres
SQL 화학으로 Postgres 데이터베이스에 연결하려고 합니다.싸이캅2를 설치했습니다.하지만 오류가 발생했습니다.sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgres
PostgreSQL에 연결하도록 SQL 화학을 구성하려면 어떻게 해야 합니까?
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "postgres://username@localhost:5432/template1"
db = SQLAlchemy(app)
URI는 다음으로 시작해야 합니다.postgresql://
대신에postgres://
SQLAlchemy는 두 가지를 모두 수락했지만 지원을 제거했습니다.postgres
이름.
SQLAlchemy 1.4는 사용되지 않는 제품을 제거했습니다.postgres
방언 이름, 그 이름postgresql
이제 대신 사용해야 합니다.방언은 앞에 있는 부분입니다.://
SQLAlchemy 1.3 및 이전 버전에서는 사용되지 않는 경고가 표시되었지만 여전히 이를 수락했습니다.
이 문제를 해결하려면 이름 바꾸기postgres://
의 URL에.postgresql://
.
이 오류는 현재 다음을 사용하는 Heroku로 작업할 때 표시됩니다.postgres
에서DATABASE_URL
그들은 제공합니다, 당신이 아마도 사용할 것입니다.SQLALCHEMY_DATABASE_URI
업데이트할 때까지 이 문제를 해결하려면 Heroku 대시보드에서 사용할 변수를 업데이트합니다.postgresql
.
herku의 문제는 간단한 python url replace 코드를 사용하여 해결되었습니다.
import os
import re
uri = os.getenv("DATABASE_URL") # or other relevant config var
if uri and uri.startswith("postgres://"):
uri = uri.replace("postgres://", "postgresql://", 1)
# rest of connection code using the connection string `uri`
출처 : https://help.heroku.com/ZKNTJQSK/why-is-sqlalchemy-1-4-x-not-connecting-to-heroku-postgres
이 문제를 해결하려면 이름 바꾸기postgres://
의 URL에.postgresql+psycopg2://
.
# production or dev DB
try:
prodURI = os.getenv('DATABASE_URL')
prodURI = prodURI.replace("postgres://", "postgresql://")
app.config['SQLALCHEMY_DATABASE_URI'] = prodURI
except:
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql:///MYDATABASE'
위의 모든 답변을 시도해 보았지만, 저에게는 이것만이 효과가 있었습니다.헤로쿠의 공식 제안(이전 댓글에 언급됨)을 따랐지만, 운이 없었습니다.마지막에 1개를 떼는 것 같아요.replace()
도움이 되었을지도 모릅니다.
@Kaitlin Berryman이 Heroku 공식 답변이 작동하지 않는다고 말했듯, DB 자격 증명을 추가하지 않기 위해 이를 이전에 추가합니다.db.create_all()
:
# create the database and the db table
import os
import re
uri = os.getenv("DATABASE_URL")
# or other relevant config var
if uri.startswith("postgres://"):
uri = uri.replace("postgres://", "postgresql://", 1)
app.config['SQLALCHEMY_DATABASE_URI'] = uri
내가 찾은 모든 레시피는 동일한 "postgres 대신 postresql 사용"을 말합니다.하지만 제 DB 접두사가 이미 "postresql"이기 때문에 저에게는 작동하지 않습니다.
몇 가지 조사 후에 저는 그 문제를 발견했습니다."alembic.ini"에는 dburl에 대한 일반 템플릿이 포함되어 있습니다.sqlalchemy.url = driver://user:pass@localhost/dbname
사용하다sqlalchemy.url = postgresql://user:pass@localhost/dbname
대신.그건 효과가 있다.
@gitau-harrison 답변을 읽고 SQL 화학 문제임을 알고 Heroku 대시보드의 변수를 postgresql을 사용하도록 업데이트하는 대신 '요구 사항에서 SQL 화학의 버전을 변경했습니다.txt'에서 1.3.7(1.4.18)로 변경되었으며 이 문제가 해결되었습니다.
언급URL : https://stackoverflow.com/questions/62688256/sqlalchemy-exc-nosuchmoduleerror-cant-load-plugin-sqlalchemy-dialectspostgre
'programing' 카테고리의 다른 글
새 프로젝트에 대한 새 빈 분기 생성 (0) | 2023.05.16 |
---|---|
Angular2의 Blur 이벤트에서 사용하는 방법은 무엇입니까? (0) | 2023.05.16 |
확장명 없이 파일 이름 가져오기 (0) | 2023.05.11 |
Postgre에 대한 원격 액세스를 허용하는 방법SQL 데이터베이스 (0) | 2023.05.11 |
클래스 기반 보기 VS 기능 기반 보기 (0) | 2023.05.11 |