При подключении к базе данных postgresql выдает ошибку sqlalchemy.exc.OperationalError
Пишу проект, и вот возникла не задача. Проблема в базе данных. Написал код для базы данных postgresql, используя sqlalchemy. Запускаю uvicorn main:app --reload, выходит такая ошибка:
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
(Background on this error at: https://sqlalche.me/e/20/e3q8)
Питон файлы: .env :
POSTGRES_USER=postgres
POSTGRES_PASSWORD=yourpassword
POSTGRES_SERVER=localhost
POSTGRES_PORT=5432
POSTGRES_DB=yourdbname_eg_debug
config.py:
import os
from dotenv import load_dotenv
from pathlib import Path
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
class Settings:
PROJECT_NAME:str = "Job Board"
PROJECT_VERSION: str = "1.0.0"
POSTGRES_USER : str = os.getenv("POSTGRES_USER")
POSTGRES_PASSWORD = os.getenv("POSTGRES_PASSWORD")
POSTGRES_SERVER : str = os.getenv("POSTGRES_SERVER","localhost")
POSTGRES_PORT : str = os.getenv("POSTGRES_PORT",5432) # default postgres port is 5432
POSTGRES_DB : str = os.getenv("POSTGRES_DB","tdd")
DATABASE_URL = f"postgresql://{POSTGRES_USER}:{POSTGRES_PASSWORD}@{POSTGRES_SERVER}:{POSTGRES_PORT}/{POSTGRES_DB}"
settings = Settings()
session.py :
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from core.config import settings
SQLALCHEMY_DATABASE_URL = settings.DATABASE_URL
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False,autoflush=False,bind=engine)
base_class.py :
from typing import Any
from sqlalchemy.ext.declarative import as_declarative, declared_attr
@as_declarative()
class Base:
id: Any
__name__: str
#to generate tablename from classname
@declared_attr
def __tablename__(cls) -> str:
return cls.__name__.lower()
main.py:
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from core.config import settings
from apis.general_pages.route_homepage import general_pages_router
from db.session import engine
from db.base_class import Base
def include_router(app):
app.include_router(general_pages_router)
def configure_static(app):
app.mount("/static", StaticFiles(directory="static"), name="static")
def create_tables():
Base.metadata.create_all(bind=engine)
def start_application():
app = FastAPI(title=settings.PROJECT_NAME,version=settings.PROJECT_VERSION)
include_router(app)
configure_static(app)
create_tables()
return app
app = start_application()
requirements.txt:
fastapi
uvicorn
#for template
jinja2
#for static files
aiofiles
#for database
sqlalchemy
psycopg2
#for loading environment variables
python-dotenv