Подключение базы данных Heroku к SQLAlchemy - PullRequest
0 голосов
/ 27 сентября 2018

поэтому, как часть MOOC веб-программирования, я должен подключиться к базе данных PostgreSQL, размещенной на Heroku, используя Python и SQLalchemy.Я потратил много часов, пытаясь сделать это безрезультатно.Моя главная проблема в том, что я не могу подключиться к базе данных, потому что каждый раз, когда я пытаюсь запустить скрипт для обновления или просто проверяю базу данных, я получаю «Сервер работает на хосте» ec2-174-129-35-61.compute-1.amazonaws.com "(174.129.35.61) и принимать соединения TCP / IP через порт 5432?" в командной строке.

Я много сделалисследования пытаются выяснить это, и кажется, что, возможно, URI моей базы данных не настроен для принятия публичных подключений.Но я попытался установить ssl = require и все еще не смог решить проблему.Может быть, я не правильно сделал?

Я пришел к мысли, что, возможно, я делаю что-то не так с кодом, или что я должен попытаться подключиться через CLI Heroku, а не из командной строки, но я неконечно.Это мой простой тестовый код:

import os
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

if not os.getenv("DATABASE_URL"):
    raise RuntimeError("DATABASE_URL is not set")

engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))

db.execute("INSERT INTO books VALUES (1, 1, 1, 1)")
db.commit()

Я установил переменную окружения DATABASE_URL в командной строке для URI базы данных, но, возможно, я сделал это неправильно?Я также попытался просто использовать URI в самом коде, но все равно не смог заставить его работать.

Я впервые использую базы данных с Heroku, поэтому я совершенно новичок, может, я делаю что-то еще неправильно?Я ценю всю помощь, которую вы, ребята, можете оказать.Заранее спасибо

1 Ответ

0 голосов
/ 27 сентября 2018

1) Проверьте, скопировали ли вы все ссылки, включая postgres://

2) Возможно, вы допустили ошибку при установке DATABASE_URL.Итак, попробуйте добавить свой URL непосредственно в скрипт:

import os
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

engine = "postgres://ennjrjkrfsb____all_code_of_key_.....___compute.amazonaws.com:5432/ddo7541ka3hio7"
db = scoped_session(sessionmaker(bind=engine))
db.execute("INSERT INTO books VALUES (1, 1, 1, 1)")
db.commit()

3) если вы используете linux, попробуйте открыть вашу базу данных, используя команду psql postgres://ennjrjkrfsb____all_code_of_key_.....___compute.amazonaws.com:5432/ddo7541ka3hio7

4) Попробуйтедоступ к вашей базе данных любым другим способом через другого интернет-провайдера (может быть, ваш провайдер или системный администратор в вашем офисе ограничил доступ к Heroku)

Обновление : попробуйте использовать бесплатную онлайн-среду разработки с переводчиком (на основе Linux), например, https://cs50.io - с этого сайта вы можете получить доступ к Heroku postgres

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...