SQLAlchemy не распознает роль "postgres" в моем докере - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь подключиться к своему образу 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)

Может кто-нибудь помочь мне решить эту проблему?

Спасибо!

1 Ответ

0 голосов
/ 26 февраля 2019
  1. На общем снимке экрана имя базы данных postgres, но в файле config.py вы установили его stone.Это намеренно?
  2. Вы не должны устанавливать хост как 0.0.0.0, так как он прослушивает каждый доступный интерфейс в вашей системе.Попробуйте запустить базу данных в определенном интерфейсе, например localhost или <IP address>, и соответственно обновите файл конфигурации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...