Переопределение имени таблицы в Flask-Alchemy

Я создаю приложение Flask и получаю доступ к базе данных MySQL с помощью Flask-Alchemy.

У меня есть следующий класс для доступа к таблице:

class price_table(db.Model): id = db.Column(db.Integer, primary_key = True) trans_id = db.Column(db.Integer) timestamp = db.Column(db.Integer) order_type = db.Column(db.String(25)) price = db.Column(db.Numeric(15,8)) quantity = db.Column(db.Numeric(25,8)) def __repr__(self): return 'id' 

Для таблицы «price_table» это работает блестяще, но проблема в том, что у меня есть несколько таблиц с теми же столбцами, что и «price_table», из которых я знаю только имя во время выполнения.

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

Как переопределить имя tablename во время выполнения?

2 Solutions collect form web for “Переопределение имени таблицы в Flask-Alchemy”

Вы должны использовать: tablename :

 class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50), unique=True) email = Column(String(120), unique=True) 

http://flask.pocoo.org/docs/0.12/patterns/sqlalchemy/

На основании комментария, оставленного jbub, я нашел следующее решение, которое делает трюк так же, как это необходимо.

 from app import db def ClassFactory(name): tabledict={'id':db.Column(db.Integer, primary_key = True), 'trans_id':db.Column(db.Integer), 'timestamp':db.Column(db.Integer), 'order_type':db.Column(db.String(25)), 'price':db.Column(db.Numeric(25,8)), 'quantity':db.Column(db.Numeric(25,8)),} newclass = type(name, (db.Model,), tabledict) return newclass 
  • Квалификационные имена таблиц с именами баз данных в sqlalchemy
  • SQLAlchemy + SQL Injection
  • Как исключить определенные поля для сериализации с помощью jsonpickle?
  • Диспетчер флагов-Admin Много-ко-многим
  • Построить запрос для фильтрации многих-ко-многим для всех экземпляров B, связанных с данным экземпляром A
  • SQLAlchemy left join с использованием подзапроса
  • SQLAlchemy упорядочивает, рассчитывая на отношение многих ко многим
  • Целевая база данных не обновляется
  • Python - лучший язык программирования в мире.