初心者向け:TkinterとPostgreSQLを接続する方法!ユーザー登録アプリ作成!

デスクトップアプリ

こんにちは!ゆーや(@yuyamanm118712)です。

PythonでGUI(グラフィカルユーザーインターフェース)アプリケーションを作成する際に、tkinterは非常に便利なライブラリです。また、データベースの管理において、PostgreSQLは強力な選択肢の一つです。

この記事では、tkinterを使用して、PostgreSQLデータベースと連携するシンプルなアプリケーションを作成する方法を、初心者向けにわかりやすく解説します!

ゆーや
ゆーや

Tkinterの基本的な使い方は以下の記事を見てね!

環境の準備

PostgreSQLのインストール

ゆーや
ゆーや

もし、PostgreSQLのインストールから知りたい方は、ぜひ以下の記事を見て下さい!

psycopg2のインストール

psycopg2」は、PythonでPostgreSQLと連携するためのライブラリです。

以下のコマンドでインストール可能です!

pip install psycopg2

データベースの準備

PostgreSQL内に必要なデータベースとテーブルを作成します。以下のSQLコマンドを使用して、簡単なテーブルを作成します。

ゆーや
ゆーや

自分のデータベース・接続したいテーブルがある方は、ここは不要です!

次に進んでください!

CREATE DATABASE mydatabase;

\c mydatabase;

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

このテーブルは、id(自動生成される主キー)、name(ユーザーの名前)、email(ユーザーのメールアドレス)の3つのカラムを持っています。

完成コード

TkinterでGUIを作成

import tkinter as tk
from tkinter import messagebox
import psycopg2

# PostgreSQLへの接続設定(※自分の環境に合わせて変更してください!)
conn = psycopg2.connect(
    dbname="mydatabase",
    user="yourusername",
    password="yourpassword",
    host="localhost"
)
cur = conn.cursor()

# Tkinterウィンドウの設定
root = tk.Tk()
root.title("User Registration")

# 名前入力フィールド
tk.Label(root, text="Name:").grid(row=0, column=0)
name_entry = tk.Entry(root)
name_entry.grid(row=0, column=1)

# メールアドレス入力フィールド
tk.Label(root, text="Email:").grid(row=1, column=0)
email_entry = tk.Entry(root)
email_entry.grid(row=1, column=1)

# 登録ボタンの機能
def register_user():
    name = name_entry.get()
    email = email_entry.get()

    if name and email:
        cur.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email))
        conn.commit()
        messagebox.showinfo("Success", "User registered successfully!")
        name_entry.delete(0, tk.END)
        email_entry.delete(0, tk.END)
    else:
        messagebox.showwarning("Input error", "Please enter both name and email.")

# 登録ボタン
register_button = tk.Button(root, text="Register", command=register_user)
register_button.grid(row=2, column=1)

root.mainloop()

# クリーンアップ
cur.close()
conn.close()
ゆーや
ゆーや

次にコードの説明をしていくよ!

コードの解説

PostgreSQLへの接続設定

まず、psycopg2.connect()を使用して、PostgreSQLデータベースに接続します。dbname、user、password、hostなどの引数を適切に設定してください。

# PostgreSQLへの接続設定(※自分の環境に合わせて変更してください!)
conn = psycopg2.connect(
    dbname="mydatabase",
    user="yourusername",
    password="yourpassword",
    host="localhost"
)

データベース操作のための「カーソルオブジェクト」を作成

# データベース操作のための「カーソルオブジェクト」を作成
cur = conn.cursor()

SQLクエリの実行

cur.execute() を使って、SELECT、INSERT、UPDATE、DELETEなどのSQLクエリを実行できます。

cur.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email))

現在のトランザクションをデータベースにコミット(確定)する

conn.commit() は、現在のトランザクションをデータベースにコミット(確定)するメソッドです。

conn.commit()
ゆーや
ゆーや

登録・更新・削除などには忘れずにつけよう!

クリーンアップ

最後に、cur.close()とconn.close()でカーソルと接続をクリーンアップします。これにより、データベース接続が適切に終了されます。

cur.close()
conn.close()

まとめ

この記事では、tkinterを使用してPostgreSQLデータベースと連携するシンプルなユーザー登録アプリケーションを作成しました。この基本的なアプリケーションをベースに、データの表示、更新、削除機能を追加して、さらに複雑なアプリケーションを作成することができます。

ぜひ、自分だけのGUIアプリを作成してみてください!

コメント

タイトルとURLをコピーしました