9

プログラムに一時テーブルが必要です。これは、「マッパー」構文を使用して次のように実現できることがわかりました。

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() のようなものを見たことがあります (徹底的に説明しながら新しいアイデアがどのように生まれるかを見るのは面白いです)

それではまたよろしくお願いします!

4

2 に答える 2

5

使用できます__table_args__か?https://docs.sqlalchemy.org/en/14/orm/declarative_tables.html#orm-declarative-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)
于 2012-11-19T14:32:30.410 に答える