InvalidRequestError: Table ‘user’ is already defined for this MetaData instance.

InvalidRequestError: Table ‘xxxxx’ is already defined for this MetaData instance. とは

SQLModelを使っていると「InvalidRequestError: Table ‘xxxxx’ is already defined for this MetaData instance.」といったエラーが出る場合があります。

このエラーは、既に存在するテーブルがメタデータインスタンスに定義されている場合に、SQLModelでは以下のようなエラーを出力します。

InvalidRequestError: Table 'user' is already defined for this MetaData instance.  
Specify 'extend_existing=True' to redefine options and columns on an existing Table object.

この場合、Userモデル内に、table_args = {‘extend_existing’: True}の記載をするとエラーを回避できます。

class User(SQLModel, table=True):
    __table_args__ = {'extend_existing': True} 
    user_id: Optional[int] = Field(primary_key=True)
    user_name: str

参考:SQLModelとは 〜SQLModelインストール・DB接続・データ追加・データ取得まで〜

Pythonを効率よく学ぶには?

Pythonを効率よく学ぶには、普段からPythonを利用している現役のデータサイエンティストや機械学習エンジニアに質問できる環境で学ぶことです。
質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。受講料も業界最安値の35,000円(6ヶ月間質問し放題+オリジナルの動画コンテンツ、テキストコンテンツの利用可能)なので、是非ご活用ください。

bootcamp_ad_72ppi.png

コメントを残す