#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.