我的程序中需要一个临时表。我已经看到这可以通过“映射器”语法以这种方式实现:
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() 这样的东西,它可能是解决这个问题的方法(在彻底解释的同时看到新想法是如何产生的,这很有趣)
再次,非常感谢您!