skip to content
barorin&

SQLAlchemy2.0以降を使ってread_sqlする方法

/ 1 min read

Table of Contents

問題

SQLAlchemy と pandas を使っていつものように read_sql したところ、
read_sql_query() throws "'OptionEngine' object has no attribute 'execute'"
というエラーが出てしまいました。

解決方法

どうやら、SQLAlchemy の ver2.0 から若干仕様が変わったようで、以下のようにしたら無事エラーが解消しました。

import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy import text as q_text
def connection_db():
"""DB接続"""
SQLALCHEMY_DATABASE_URL = "sqlite:///hoge.db"
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
return engine
engine = connection_db()
# ポイント
# SQLはSQLAlchemyのtext関数を通す
# engineにconnect()メソッドをつける
q = q_text("SELECT * FROM huga_table")
df = pd.read_sql(sql=q, con=engine.connect())

参考

read_sql_query() throws “‘OptionEngine’ object has no attribute ‘execute’” with SQLAlchemy 2.0.0

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。