ha

fastapi において、以下のエラーがでました。対応策を教えて。sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got <class 'schemas.Mshapikey'>.
 
ChatGPT

このエラーは、SQLAlchemyで使用されている schemas.Mshapikey が不正な場所で使用されている可能性があります。SQLAlchemyでは、クエリの条件式やカラムなどの要素が期待される場所で、それに適した型でなければなりません。

対応策として、次の点を確認してみてください:

  1. テーブルの指定: SQLAlchemyを使用してデータベースを操作する場合、テーブルに対する操作を行う必要があります。schemas.Mshapikey がモデルではなく、テーブルを指している場合、モデルクラスを使用してください。

  • from sqlalchemy.orm import Session from .models import Mshapikey def some_function(db: Session): result = db.query(Mshapikey).filter_by(some_column='some_value').first() return result

    ここで、MshapikeyBase クラスを継承した SQLAlchemy のモデルクラスであると仮定しています。

  • カラムの指定: schemas.Mshapikey がモデルではなく、単なるデータのスキーマである場合、それをモデルに変換し、データベースモデルをクエリで使用してください。

  1. from sqlalchemy.orm import Session from .models import Mshapikey from .schemas import Mshapikey as MshapikeySchema def some_function(db: Session, mshapikey: MshapikeySchema): db_mshapikey = Mshapikey(**mshapikey.dict()) db.add(db_mshapikey) db.commit() db.refresh(db_mshapikey) return db_mshapikey

    ここで、MshapikeySchemapydantic.BaseModel を継承したデータのスキーマクラス、Mshapikey は SQLAlchemy のモデルクラスです。

これらのアプローチのどれが問題に対応するかは、具体的なコードや使用しているモデル、スキーマに依存します。どちらの場合にも、データベース操作の際に SQLAlchemy のモデルクラスを使用することが一般的です。