PythonからMySQLでSELECTするのにSQLAlchemyを使っているのですが、SQLAlchemyのバージョンを変えたところ以下のエラーが発生しました。
エラーメッセージ
AttributeError: 'OptionEngine' object has no attribute 'execute'
原因
SELECTした結果をデータフレームに格納しているのですが、read_sqlだと都合が悪いようです。
# これだとNG
query = 'SELECT racer_rank FROM kibetsu WHERE racer_id = %s'
df_racer_rank = pd.read_sql(query, con=engine, params=[racer_id])
解決策
pandasのDataFrameを使うと解決します。ただしparamsが使えなくなるため、SQL文に変数を挿入する場合はformatを使います。
# これだとOK
query = 'SELECT racer_rank FROM kibetsu WHERE racer_id = \"{}\"'.format(racer_id)
df_racer_rank = pd.DataFrame(engine.connect().execute(alc.text(query)))