————————————————————————— OperationalError Traceback (most recent call last) File c:UsersAdministratorDocumentstask_schedulercrawlLibsite-packagessqlalchemyenginebase.py:1969, in Connection._exec_single_context(self, dialect, context, statement, parameters) 1968 if not evt_handled: -> 1969 self.dialect.do_execute( 1970 cursor, str_statement, effective_parameters, context 1971 ) 1973 if self._has_events or self.engine._has_events: File c:UsersAdministratorDocumentstask_schedulercrawlLibsite-packagessqlalchemyenginedefault.py:922, in DefaultDialect.do_execute(self, cursor, statement, parameters, context) 921 def do_execute(self, cursor, statement, parameters, context=None): –> 922 cursor.execute(statement, parameters) OperationalError: no such column: product_data.ブランド名_英名 The above exception was the direct cause of the following exception: OperationalError Traceback (most recent call last) Cell In[1], line 58 55 session = Session() 57 # IDが1のデータを取得 —> 58 retrieved_data = session.query(ProductData).filter_by(id=1).first() 60 # データの属性にアクセス 61 print(retrieved_data.html_id) … FROM product_data WHERE product_data.id = ? LIMIT ? OFFSET ?] [parameters: (1, 1, 0)] (Background on this error at: https://sqlalche.me/e/20/e3q8)

エラーのメッセージを見る限り、OperationalError: no such column: product_data.ブランド名_英名 というエラーが発生しています。これは ProductData テーブルに ブランド名_英名 という名前のカラムが存在しないためです。

おそらく、データベースのマイグレーションが行われていないか、ProductData クラスが最新の状態でない可能性があります。以下の手順で問題を解決できるか試してみてください。

  1. データベースを削除し、再作成:

    python
    Base.metadata.drop_all(engine) Base.metadata.create_all(engine)

    上記のコードはデータベースのすべてのテーブルを削除し、新しく作成します。これにより、最新のテーブル構造が反映されます。

  2. セッションを作成した後にマイグレーションを実行:

    python
    Session = sessionmaker(bind=engine) session = Session() # マイグレーションを実行 session.execute("PRAGMA foreign_keys=off") session.execute("BEGIN TRANSACTION") session.commit() Base.metadata.create_all(engine)

    上記のコードはマイグレーションを実行します。これにより、テーブル構造が最新のものに更新されます。

これらの手順で問題が解決しない場合、データベースの定義やセッションの作成などが正しく行われているか再度確認してみてください。

未分類

Posted by ぼっち