Доступ к классам / моделям с помощью Flask Sqlalchemy, который я создал через pandas .to_sql - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь разработать веб-приложение с Flask. Я пытаюсь сделать следующее:

  1. Получить данные от клиента в виде таблицы
  2. Используйте pandas для выполнения вычислений в каждой строке таблицы и создания нескольких dfs а затем добавьте их в один df
  3. Затем используйте to_ sql для загрузки консолидированного df в таблицу в postgres базе данных, используя Flask SQLalchemy (я в порядке, пока здесь)
  4. Затем я хочу использовать Flask sqlalchemy для запроса и редактирования таблицы в базе данных.

Проблема в шаге 4. Так как я использую функцию to_ sql для создания таблицы в база данных, таблица не имеет первичного ключа.

Когда я использую следующий код для отражения классов:

db.Model.metadata.reflect(db.engine)

class LeaseInfo(db.Model):
    __table__ = db.Model.metadata.tables['lease_info']

    def __repr__(self):
        return self.DISTRICT

, я получаю следующую ошибку: sqlalchemy.ex c .ArgumentError: сопоставленный класс LeaseInfo-> lease_info не смог собрать какие-либо столбцы первичного ключа для сопоставленной таблицы lease_info

Когда я использую следующий код для доступа к классам:

Base = automap_base()
Base.prepare(db.engine, reflect = True)
LeaseInfo = Base.classes.lease_info

Я получаю следующую ошибку: строка 212, в __getattr__ поднять AttributeError (key) AttributeError: lease_info

Я видел предложения, в которых говорится, что я сначала определяю классы со всеми столбцами, а затем добавляю их с помощью to_ sql, но я хочу уметь делать это более динамично.

1 Ответ

1 голос
/ 10 мая 2020

Закончил определение классов (db.Model) в приложении, а затем добавление данных к моделям с помощью pd.to_ sql, но все же хотел бы знать более короткий способ, если это возможно.

...