Я пытаюсь подключиться к своему образу dog postgresql, но SQLAlchemy в python отклоняет соединение.
Я создал экземпляр Docker, используя следующую команду:
docker run -d --name postgres-m2m -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=pass postgres
И я могу успешно подключиться к своему экземпляру, используя правую панель базы данных Pycharm. проверьте снимок экрана
Поэтому я попытался подключить его к своему приложению python.
Сначала я создал settings / config.py file:
class dbCredentials:
DB_USER = 'postgres'
DB_PASS = 'pass'
DB_NAME = 'postgres'
DB_HOST = '0.0.0.0'
DB_PORT = '5432'
DB_SCHEMA = 'telecom'
def __int__(self):
pass
А потом мой model / base.py
from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from settings.config import dbCredentials
credentials = dbCredentials()
DB_USER = credentials.DB_USER
DB_PASS = credentials.DB_PASS
DB_HOST = credentials.DB_HOST
DB_PORT = credentials.DB_PORT
DB_NAME = credentials.DB_NAME
DB_SCHEMA = credentials.DB_SCHEMA
engine = create_engine(f'postgresql://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}')
Session = sessionmaker(bind=engine)
Base = declarative_base(metadata=MetaData(schema=DB_SCHEMA))
После этого я действительно создал таблицу model / tables / status.py
from sqlalchemy import Column, SmallInteger, String
from src.models.base import Base
class Status(Base):
__tablename__ = 'status'
id = Column('id', SmallInteger, primary_key=True, autoincrement=True, nullable=False)
STATUS = Column('STATUS', String, nullable=False)
def __init__(self, STATUS):
self.STATUS = STATUS
И, наконец, мой main.py файл
from src.models.base import Base, Session, engine
from src.models.tables.status import Status
Base.metadata.create_all(engine, checkfirst=True)
session = Session()
В этот момент я получаю следующую ошибку:
[...] conn = _connect (dsn, connection_factory = connection_factory, ** kwasync) sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL: роль "postgres" не существует (фон этой ошибкиat: http://sqlalche.me/e/e3q8)
Может кто-нибудь помочь мне решить эту проблему?
Спасибо!