Временная таблица 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)