Python Tech

Python SQLAlchemy ORMクエリ結果をDataFrameへ変換する方法

データベースからSELECTしてDataFrameを生成するには、pandas.read_sql() にSQL文字列を渡すだけですが、sqlalchemy.orm ではどうすればいいでしょうか?

結論は、statementからSQL文を取得しread_sql()に渡せばOKです。

この記事では、PythonのSQLAlchemy (ORM)を使って、データベースのレコードをpandas.DataFrameとして取得する方法を解説しています。

 

実行環境

$ python --version
Python 3.9.2

$ pip freeze
pandas==1.2.3
PyMySQL==1.0.2
SQLAlchemy==1.4.5

MySQL 5.7.35

 

ORMクエリ結果をDataFrameで取得

session.query() でQueryを作成します。

q = session.query(User).filter(User.affiliation == "IT")

 

Query.statement メンバにSQL文が入っているのでこれを利用します。

print(q.statement)
# SELECT users.id, users.name, users.affiliation, users.job_title, users.expertise, users.birthday 
# FROM users 
# WHERE users.affiliation = :affiliation_1

 

pandas.read_sql() でSQLの実行結果をDataFrameへ変換します。

pandas.read_sql(sql, con[,…])

sqlSQL文字列
conコネクター(sqlalchemy.engine.Engine)

sqlには先ほど取得したstatement、conにはデータベース情報が設定されたEngineを渡します。

df = pd.read_sql(q.statement, session.bind)
print(df)
#    id    name affiliation          job_title            expertise
# 0  14   Logan          IT  Food Technologist  Conflict Resolution
# 1  28  Martin          IT          Webmaster      Self-motivation
# 2  29    Ally          IT     HR Coordinator             Learning

 

Pythonのスキルを使って毎月の収入源を増やすのが最適なんじゃないかという件

実際、今のスキルに合わせて仕事を獲得し、スキマ時間で毎月+5、+20、+70万円くらいの人が多いです。

必要なスキル、仕事の獲得までの流れは以下の記事で徹底解説しています。
もちろん全部無料です
空いた時間にぜひ参考にしてみてください。

 

今回参考にしたページ・資料

pandas.read_sql — pandas 1.3.3 documentation

 

  • この記事を書いた人

次世代ペンギン

長いのでペンギンとお呼びください。システム開発・プログラミングのお仕事をしています。甘味とコーヒーは生命線。多くの人に役立つ情報のシェアが目標です。

人気の記事

1

会社員でプログラマーとして働いている人、インフラやネットワークのエンジニアとして働いている人の中には、フリーランスのプログラマーとして独立、もしくは転向したい人もいるので ...

2

キャリアアップのため、または高収入を目指して、しっかりプログラミングを学びたいという人が増えてきましたね。 この記事では現役のエンジニアである私が、実際に仕事で稼げるよう ...

3

フリーランスのプログラマーにとって収入の向上に最も直結するのはスキルです。 必要なスキル、スキルの獲得方法が気になる人も多いでしょう。 また、これからフリーランスを目指す ...

4

Vuetifyの v-progress-circular コンポーネントは、数値データや処理状況を環状(円状)のデザインで教えてくれるUIデザインです。 ローディングのス ...

5

Vuexのstore(ストア)を使うと、各コンポーネント間で個別にデータのやり取りすることなく、データを一元的に管理できます。Vueでは欠かせない機能といえるでしょう。 ...

-Python, Tech
-, , ,