Временная таблица SQLAlchemy с декларативной базой

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

t = Table(
    't', metadata,
    Column('id', Integer, primary_key=True),
    # ...
    prefixes=['TEMPORARY'],
)

видел здесь

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

это упрощенная версия того, как выглядит мой декларативный класс например:

import SQLAlchemy as alc
class Tempo(Base):
    """
    Class for temporary table used to process data coming from xlsx
    @param Base Declarative Base
    """

    # TODO: make it completely temporary

    __tablename__ = 'tempo'

    drw = alc.Column(alc.String)
    date = alc.Column(alc.Date)
    check_number = alc.Column(alc.Integer)

спасибо заранее!

ОТРЕДАКТИРОВАНО С НОВЫМИ ПРОБЛЕМАМИ:

теперь класс выглядит так:

import SQLAlchemy as alc

class Tempo(Base):
        """
        Class for temporary table used to process data coming from xlsx
        @param Base Declarative Base
        """

        # TODO: make it completely temporary

        __tablename__ = 'tempo'
        __table_args__ = {'prefixes': ['TEMPORARY']}

        drw = alc.Column(alc.String)
        date = alc.Column(alc.Date)
        check_number = alc.Column(alc.Integer)

и когда я пытаюсь вставить данные в этой таблице, я получаю следующее сообщение об ошибке:

sqlalchemy.exc.OperationalError: (OperationalError) no such table:
tempo u'INSERT INTO tempo (...) VALUES (?, ?, ?, ?, ?, ?, ?, ?)' (....)

кажется, что таблица не существует, просто объявив ее. Я видел что-то вроде create_all (), что может быть решением для этого (забавно видеть, как появляются новые идеи при объяснении тщательно)

опять же, большое спасибо!

1 ответов


можно использовать __table_args__? Смотри http://docs.sqlalchemy.org/en/latest/orm/extensions/declarative.html#table-configuration

class Tempo(Base):
    """
    Class for temporary table used to process data coming from xlsx
    @param Base Declarative Base
    """

    # TODO: make it completely temporary

    __tablename__ = 'tempo'
    __table_args__ = {'prefixes': ['TEMPORARY']}

    drw = alc.Column(alc.String)
    date = alc.Column(alc.Date)
    check_number = alc.Column(alc.Integer)