問題
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