icon
icon

Pythonでデータベースに接続し利用する方法【初心者向け】

初心者向けにPythonでデータベースに接続し利用する方法について解説しています。SQLiteとMySQLそれぞれの特徴、データベースの基本の扱い方についてサンプルで確認しながら学びましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Pythonでデータベースに接続し利用する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

Pythonでデータベースに接続することができると、膨大なデータを効率的に扱えます。

実務でも、Pythonでデータベースに接続して、データの作成・読込・更新・削除作業を行うので、ぜひ学習してみてください。

 

目次

 

そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

データベースに接続し、利用する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

データベースを利用する方法

プログラムでデータを扱う場合、テキストファイルやCSVファイルを使用することがあります。

テキストファイルやCSVファイルを使用して、プログラムを動作させること自体は可能です。

しかし、データの量が大量になった時、データベースというデータを扱う専用のアプリケーションを利用する必要があります。

データベースを使うと、テーブル(表)やレコード(行)という単位でデータを扱うことができます。

データの型も定義できるので、より厳密にデータを管理することが可能です。

データベースをデータベースサーバとして別サーバで運用することで、プログラムを設置しているメインサーバに障害が生じたときも、データだけは守ることが可能です。

 

今回は、Webサービスを制作する上でよく利用される、次の3つのデータベースを紹介します。

  1. SQLite
  2. MySQL
  3. PostgreSQL

 

SQLite

小規模なデータ向けのデータベースです。

Python の標準ライブラリに含まれている sqlite3 モジュールを使って利用できます。

接続例

import sqlite3
conn = sqlite3.connect('example.db')
conn.close()

解説

import sqlite3では、sqliteライブラリをインポートしています。

conn = sqlite3.connect(‘データベース名’)では、データベース名というデータベースに接続しています。

conn.close()では、接続を終了しています。

 

MySQL

中〜大規模向けのデータベースです。

高い柔軟性と拡張性を兼ね備えており、クラウド対応しています。

Google Trendsで調べるとSQLiteとPostgreSQLと比べ、最も検索されているデータベースです。

Webサービスを構築する場合、最も使用されているデータベースのため、エラーの解消情報が大量にあります。

MySQLに精通しているエンジニアを探すことが、他のデータベースに比べ簡単です。

接続例

import MySQLdb
 conn = MySQLdb.connect( user='root', passwd='root', host='localhost', db='mysql')
 con.close

解説

import MySQLdbでは、MySQLを利用するためのライブラリをインポートしています。

conn = MySQLdb.connect( user=’root’, passwd=’root’, host=’localhost’, db=’mysql’)では、MySQLに接続するための認証情報を設定して、MySQLに接続しています。

con.closeでは、MySQLの接続を終了しています。

 

PostgreSQL

中〜超大規模向けのデータベースです。

複雑なクエリ(処理)に向いています。

NoSQLのような超大規模なデータを使用し、多種多様なデータ型に対応しています。

PostgreSQLを選択するデータベースエンジニアは、MySQLの利用経験があり、中級者以上のデータベースエンジニアである可能性が高いです。

接続例

import psycopg2
conn = psycopg2.connect(" user=" + users +" dbname=" + dbnames +" password=" + passwords)
conn.close()

解説

import psycopg2では、PostgreSQLを利用するためのライブラリをインポートしています。

conn=psycopg2.connect(” user=”+users+” dbname=”+dbnames+” password=”+passwords)では、PostgreSQLに接続するための認証情報を設定して、PostgreSQLに接続しています。

conn.close()では、PostgreSQLの接続を終了しています。

 

実際に書いてみよう

今回のサンプルプログラムでは、 Python の sqlite3 モジュール を使用して SQLite の使い方を確認します。

プログラムは公式ドキュメントを参考にしています。

 

テーブルを作成してレコードを挿入してみましょう

テーブルを作成してレコードを挿入していますが、実行結果は特にありません。

エラーがでなければ実行は成功しています。

# 必要モジュールをインポートする
import sqlite3

# データベースに接続する
conn = sqlite3.connect('example.db')
c = conn.cursor()

# テーブルの作成
c.execute('''CREATE TABLE users(id real, name text, birtyday text)''')

# データの挿入
c.execute("INSERT INTO users VALUES (1, '煌木 太郎', '2001-01-01')")
c.execute("INSERT INTO users VALUES (2, '学習 次郎', '2006-05-05')")
c.execute("INSERT INTO users VALUES (3, '牌存 花子', '2017-09-10')")

# 挿入した結果を保存(コミット)する
conn.commit()

# データベースへのアクセスが終わったら close する
conn.close()

 

挿入したレコードを取得する

# データベースに接続する
conn = sqlite3.connect('example.db')
c = conn.cursor()

# レコードを生年月日の降順で取得する
for row in c.execute('SELECT * FROM users ORDER BY birtyday DESC'):
    print(row)

# データベースへのアクセスが終わったら close する
conn.close()

実行結果

(3.0, '牌存 花子', '2017-09-10')
(2.0, '学習 次郎', '2006-05-05')
(1.0, '煌木 太郎', '2001-01-01')

 

[PR] 未経験からWebエンジニアを目指す方法とは

まとめ

今回は、Pythonでデータベースに接続する解説を行いました。

SQLiteは、小規模なデータ向けのデータベースでした。

MySQLは、中〜大規模向けのデータベースでした。

PythonでMySQLに接続する方法も参考にしてみてください。

PostgreSQLは、中〜超大規模向けのデータベースでした。

業務システム向けのデータベースという記事も参考にしてみてください。

 

大石ゆかり

内容が分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

Pythonを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPythonコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、人工知能(AI)や機械学習の基礎を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!