【解決済】SQLAlchemyでpandasのread_sqlが動かない

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)))
タイトルとURLをコピーしました