Я создаю приложение FastaApi + Postgres + Sqlalchemy + Alembic
У меня ошибка
backend-api_1 | File "/app/main.py", line 19, in get_users
backend-api_1 | return db.query(User).all()
...
backend-api_1 | sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server at "db" (172.24.0.2), port 5433 failed: Connection refused
Вывод моего журнала XXX_ postgresql://user123:pass123@db:5433/dbname — строка подключения выглядит нормально
Мой код :
app/database/session.py
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
# Replace with your own PostgreSQL instance
DB_USER = os.getenv("POSTGRES_USER")
DB_PASSWORD = os.getenv("POSTGRES_PASSWORD")
DB_NAME = os.getenv("POSTGRES_DB")
DB_HOST= os.getenv("DB_HOST")
DB_PORT = os.getenv("DB_PORT")
DATABASE_URL = f'postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}'
print("XXX_ ", DATABASE_URL)
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(bind=engine)
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
app/main.py
from fastapi import FastAPI, Depends, HTTPException
from sqlalchemy.orm import Session
from typing import List, Dict, Any
from models.users import User
from schemas.users import UserSchema, BaseUserSchema
from database.session import get_db
app = FastAPI()
@app.get("/users")
def get_users(db: Session = Depends(get_db)):
return db.query(User).all()
@app.post("/users", response_model=UserSchema, tags=["user"])
def create_user(user_data: BaseUserSchema, db: Session = Depends(get_db)):
query = db.query(User).filter(User.name == user_data.name).first()
if query:
raise HTTPException(status_code=400, detail="User already exist")
new_user = User(**user_data)
db.add(new_user)
db.commit()
return new_user
alembic/env.py (был изменен в соответствии с этим руководством https://www.nashruddinamin.com/blog/how ... rations-in -ваше-приложение-fastapi)
from logging.config import fileConfig
from sqlalchemy import engine_from_config
from sqlalchemy import pool
from alembic import context
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
# Interpret the config file for Python logging.
# This line sets up loggers basically.
if config.config_file_name is not None:
fileConfig(config.config_file_name)
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
from app.models import Base
target_metadata = Base.metadata
from app.database.session import DATABASE_URL
config.set_main_option('sqlalchemy.url', DATABASE_URL)
...
Подробнее здесь: https://stackoverflow.com/questions/793 ... on-refused
Подключение к серверу по адресу «db» (172.24.0.2), порт 5433 не удалось: соединение отклонено ⇐ Python
Программы на Python
1736895155
Anonymous
Я создаю приложение FastaApi + Postgres + Sqlalchemy + Alembic
У меня ошибка
backend-api_1 | File "/app/main.py", line 19, in get_users
backend-api_1 | return db.query(User).all()
...
backend-api_1 | sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server at "db" (172.24.0.2), port 5433 failed: Connection refused
Вывод моего журнала XXX_ postgresql://user123:pass123@db:5433/dbname — строка подключения выглядит нормально
Мой код :
app/database/session.py
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
# Replace with your own PostgreSQL instance
DB_USER = os.getenv("POSTGRES_USER")
DB_PASSWORD = os.getenv("POSTGRES_PASSWORD")
DB_NAME = os.getenv("POSTGRES_DB")
DB_HOST= os.getenv("DB_HOST")
DB_PORT = os.getenv("DB_PORT")
DATABASE_URL = f'postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}'
print("XXX_ ", DATABASE_URL)
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(bind=engine)
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
app/main.py
from fastapi import FastAPI, Depends, HTTPException
from sqlalchemy.orm import Session
from typing import List, Dict, Any
from models.users import User
from schemas.users import UserSchema, BaseUserSchema
from database.session import get_db
app = FastAPI()
@app.get("/users")
def get_users(db: Session = Depends(get_db)):
return db.query(User).all()
@app.post("/users", response_model=UserSchema, tags=["user"])
def create_user(user_data: BaseUserSchema, db: Session = Depends(get_db)):
query = db.query(User).filter(User.name == user_data.name).first()
if query:
raise HTTPException(status_code=400, detail="User already exist")
new_user = User(**user_data)
db.add(new_user)
db.commit()
return new_user
alembic/env.py (был изменен в соответствии с этим руководством https://www.nashruddinamin.com/blog/how-to-use-alembic-for-database-migrations-in -ваше-приложение-fastapi)
from logging.config import fileConfig
from sqlalchemy import engine_from_config
from sqlalchemy import pool
from alembic import context
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
# Interpret the config file for Python logging.
# This line sets up loggers basically.
if config.config_file_name is not None:
fileConfig(config.config_file_name)
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
from app.models import Base
target_metadata = Base.metadata
from app.database.session import DATABASE_URL
config.set_main_option('sqlalchemy.url', DATABASE_URL)
...
Подробнее здесь: [url]https://stackoverflow.com/questions/79356603/connection-to-server-at-db-172-24-0-2-port-5433-failed-connection-refused[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия