- 파이썬을 이용한 PyGTK를 활용한 데이터베이스 애플리케이션 개발

이번 블로그 포스트에서는 파이썬과 PyGTK를 사용하여 데이터베이스 애플리케이션을 개발하는 방법에 대해 알아보겠습니다.

데이터베이스 연결 설정

먼저, 데이터베이스에 연결하기 위해 필요한 설정을 해야 합니다. PyGTK는 다양한 데이터베이스와의 연동을 지원하기 때문에, 원하는 데이터베이스에 맞는 드라이버를 설치하고 연결을 설정해야 합니다.

import pygtk
pygtk.require('2.0')
import gtk
import psycopg2

class DatabaseApp:
    def __init__(self):
        self.conn = psycopg2.connect(database="mydb", user="myuser", password="mypassword", host="localhost", port="5432")
        self.cur = self.conn.cursor()

    def execute_query(self, query):
        self.cur.execute(query)
        result = self.cur.fetchall()
        return result

    def close_connection(self):
        self.cur.close()
        self.conn.close()

app = DatabaseApp()

위의 코드에서는 psycopg2를 사용하여 PostgreSQL 데이터베이스에 연결하는 예제를 보여줍니다. 연결에 필요한 정보인 데이터베이스 이름, 사용자 이름, 비밀번호, 호스트 및 포트번호를 수정하여 원하는 데이터베이스에 연결하세요.

데이터베이스 애플리케이션 개발

이제 데이터베이스에 연결되었으므로, PyGTK를 사용하여 데이터베이스 애플리케이션을 개발할 수 있습니다. PyGTK는 GTK+ 라이브러리를 파이썬으로 감싼 것이며, 그래픽 사용자 인터페이스(GUI)를 쉽게 구축할 수 있도록 도와줍니다.

import pygtk
pygtk.require('2.0')
import gtk
import psycopg2

class DatabaseApp:
    def __init__(self):
        self.conn = psycopg2.connect(database="mydb", user="myuser", password="mypassword", host="localhost", port="5432")
        self.cur = self.conn.cursor()

        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("Database App")
        self.window.set_default_size(400, 300)
        self.window.connect("destroy", self.close_connection)

        self.treeview = gtk.TreeView()
        self.scrollable_treelist = gtk.ScrolledWindow()
        self.scrollable_treelist.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.scrollable_treelist.add(self.treeview)
        self.window.add(self.scrollable_treelist)

        self.column_names = ["ID", "Name", "Age"]
        self.column_types = [int, str, int]
        for i, column_name in enumerate(self.column_names):
            cell_renderer = gtk.CellRendererText()
            column = gtk.TreeViewColumn(column_name, cell_renderer)
            column.add_attribute(cell_renderer, "text", i)
            self.treeview.append_column(column)

        self.load_data()

    def load_data(self):
        query = "SELECT * FROM users"
        result = self.execute_query(query)
        self.treeview.set_model(self.create_model(result))

    def create_model(self, data):
        model = gtk.ListStore(*self.column_types)
        for row in data:
            model.append(row)
        return model

    def execute_query(self, query):
        self.cur.execute(query)
        result = self.cur.fetchall()
        return result

    def close_connection(self, widget, data=None):
        self.cur.close()
        self.conn.close()
        gtk.main_quit()

    def run(self):
        self.window.show_all()
        gtk.main()

app = DatabaseApp()
app.run()

위의 코드에서는 TreeView를 사용하여 데이터베이스의 결과를 표시하는 간단한 애플리케이션을 보여줍니다. 데이터베이스의 결과가 변경되면, load_data 메서드를 호출하여 TreeView를 업데이트합니다.

마치며

이번 블로그 포스트에서는 파이썬과 PyGTK를 사용하여 데이터베이스 애플리케이션을 개발하는 방법에 대해 알아보았습니다. PyGTK를 통해 데이터베이스에 연결하고 결과를 그래픽 사용자 인터페이스로 표시하는 기본적인 예제를 살펴보았습니다. 데이터베이스 애플리케이션을 개발하는데에는 각 데이터베이스에 맞는 드라이버를 사용하고, PyGTK 외에도 다양한 GUI 라이브러리를 활용할 수 있습니다.

#Python #PyGTK