Попытка развернуть приложение Flask на Heroku с неопределяемой проблемой psycopg2

#postgresql #heroku #heroku-postgres

#postgresql #heroku #heroku-postgres

Вопрос:

Я пытаюсь развернуть приложение flask на Heroku, и я получил следующую ошибку, введите описание изображения здесь

Приведенный выше код соответствует следующему фрагменту, я смог запустить его на своем локальном компьютере с тем же точным кодом, и я не уверен, почему это не тот же случай после того, как я отправил его на Heroku.

 # returns list of strings of all box_names in database
def get_box_names():
    query = "SELECT * from Box"
    print(query)
    result = db.engine.execute(text(query))

    return [box[0] for box in result]
  

и мои модели базы данных следующие,

 class Box(db.Model):
    box_name = db.Column(db.String(255), primary_key=True)

    def __repr__(self):
        return '<Box %r>' % self.box_name

class Channel(db.Model):
    channel_name = db.Column(db.String(255), primary_key=True)
    sensor_name = db.Column(db.String(255))

    def __repr__(self):
        return '<Channel {channel_name}, Sensor {sensor_name}>'.format(
            channel_name=self.channel_name, sensor_name=self.sensor_name)

class Data(db.Model):
    box_name = db.Column(db.String(255), db.ForeignKey('box.box_name'), 
                        primary_key=True)
    channel_name = db.Column(db.String(255), 
        db.ForeignKey('channel.channel_name'), primary_key=True)
    time = db.Column(db.DateTime, primary_key=True)
    value = db.Column(db.Float)
    label = db.Column(db.String(255))

    def __repr__(self):
        return '<Data: {}, {}, {}, {}, {}>'.format(self.box_name, 
            self.channel_name, self.time, self.value, self.label)


class Picture(db.Model):
    box_name = db.Column(db.String(255), db.ForeignKey('box.box_name'),
                        primary_key=True)
    time = db.Column(db.DateTime, primary_key=True)
    picture = db.Column(db.LargeBinary)

    def __repr__(self):
        return '<Picture: {}, {}, {}>'.format(self.box_name, 
            self.time, len(self.picture))
  

Комментарии:

1. действительно ли таблица существует как box или Box ? Если B написано с заглавной буквы, вам нужно заключить имя таблицы в двойные кавычки

2. @richyen Привет, спасибо за ответ, я только что вошел в свою базу данных, и название схемы — «box». Я также не уверен, когда я нахожусь внутри базы данных, оба select * from box; и select * from Box; дают мне тот же результат.

3. @richyen а также должен ли я иметь SELECT * from Box; вместо SELECT * from Box , поскольку я выполняю этот текст как SQL-запрос.

4. не могли бы вы обновить свой пост с d box выводом? Я просто хочу убедиться, что вы используете правильную схему. Кроме того, можете ли вы подтвердить, что ваше приложение Flask подключается к правильной базе данных?

5. @richyen, моя проблема заключается в следующем, у меня есть локальная настройка базы данных, но я не знаю, как отобразить ее на сервер Heroku.