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