Django

⌘K
  1. Home
  2. Django
  3. Django তে কিভাবে কাজ করতে...
  4. Django inspectdb ব্যবহার করে বিদ্যমান ডাটাবেজ থেকে মডেল তৈরি:

Django inspectdb ব্যবহার করে বিদ্যমান ডাটাবেজ থেকে মডেল তৈরি:

ধরুন আপনার একটি বিদ্যমান ডাটাবেজ রয়েছে যেখানে একটি টেবিল employees আছে। এই টেবিলে কিছু তথ্য রয়েছে:

  • id: প্রাইমারি কী
  • name: কর্মচারীর নাম
  • email: কর্মচারীর ইমেইল
  • position: কর্মচারীর পদ
  • created_at: তথ্য তৈরির তারিখ।

এখন, আমরা এই ডাটাবেজের জন্য Django ব্যবহার করে মডেল তৈরি করব এবং ডেটার উপর কাজ করব। নিচে ধাপে ধাপে সব ব্যাখ্যা করা হলো।


ধাপ ১: বিদ্যমান ডাটাবেজ প্রস্তুত করুন

আপনার ডাটাবেজ তৈরি করা আছে ধরে নেওয়া হচ্ছে। একটি MySQL ডাটাবেজ তৈরি করা হতে পারে এইভাবে:

CREATE DATABASE company_db;

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    position VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

এখানে, ডাটাবেজ company_db এবং টেবিল employees তৈরি করা হয়েছে।

ধাপ ২: Django প্রকল্প তৈরি করুন

২.১. নতুন Django প্রকল্প তৈরি:

django-admin startproject company_project
cd company_project

২.২. নতুন অ্যাপ তৈরি করুন:

python manage.py startapp company_app

২.৩. অ্যাপ রেজিস্টার করুন:

settings.py-এর INSTALLED_APPS-এ company_app যুক্ত করুন:

INSTALLED_APPS = [
    ...
    'company_app',
]

ধাপ ৩: ডাটাবেজ কানেকশন সেটআপ করুন

settings.py-এ ডাটাবেজ সেটিংস পরিবর্তন করুন:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # MySQL ব্যবহৃত
        'NAME': 'company_db',                # ডাটাবেজের নাম
        'USER': 'root',                      # MySQL ইউজার
        'PASSWORD': 'your_password',         # MySQL পাসওয়ার্ড
        'HOST': 'localhost',                 # হোস্ট
        'PORT': '3306',                      # ডিফল্ট MySQL পোর্ট
    }
}

ধাপ ৪: inspectdb দিয়ে মডেল তৈরি

Django-র inspectdb কমান্ড দিয়ে বিদ্যমান ডাটাবেজ থেকে মডেল জেনারেট করুন।

৪.১. মডেল জেনারেট করা:

python manage.py inspectdb > company_app/models.py

৪.২. ফাইলটি চেক করুন:

company_app/models.py ফাইল খুলুন। এটি দেখতে কিছুটা এই রকম হবে:

from django.db import models

class Employees(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255)
    email = models.CharField(unique=True, max_length=255)
    position = models.CharField(max_length=255, blank=True, null=True)
    created_at = models.DateTimeField()

    class Meta:
        managed = False  # বিদ্যমান ডাটাবেজে সরাসরি কাজ হবে
        db_table = 'employees'  # টেবিলের নাম

ধাপ ৫: মডেল কাস্টমাইজ করুন (প্রয়োজন হলে)

managed = False মানে Django এই টেবিল নিজে তৈরি করবে না। তবে আপনি চাইলে এটিকে True করে নতুন টেবিল মাইগ্রেশন করতে পারেন।

ধাপ ৬: ORM দিয়ে ডেটার উপর কাজ করুন

৬.১. ডেটা রিড করা:

ডাটাবেজের ডেটা পড়ার জন্য Django ORM ব্যবহার করুন। views.py-এ একটি ভিউ তৈরি করুন:

from django.http import JsonResponse
from .models import Employees

def employee_list(request):
    employees = Employees.objects.all().values()  # সমস্ত ডেটা JSON আকারে পড়া
    return JsonResponse(list(employees), safe=False)

৬.২. URL রেজিস্টার করুন:

urls.py ফাইল আপডেট করুন:

from django.urls import path
from company_app.views import employee_list

urlpatterns = [
    path('employees/', employee_list, name='employee-list'),
]

৬.৩. ব্রাউজারে দেখুন:

সার্ভার চালান:

python manage.py runserver

তারপর http://127.0.0.1:8000/employees/ URL-এ গিয়ে ডেটা চেক করুন।


ধাপ ৭: ডেটা ইন্সার্ট এবং আপডেট করা

i) ডেটা ইন্সার্ট:

from company_app.models import Employees

new_employee = Employees(name='John Doe', email='john@example.com', position='Developer')
new_employee.save()

ii) ডেটা আপডেট:

employee = Employees.objects.get(id=1)
employee.position = 'Senior Developer'
employee.save()

iii) ডেটা ডিলিট:

employee = Employees.objects.get(id=1)
employee.delete()

উপসংহার:

এই ধাপগুলো অনুসরণ করে আপনি সহজেই inspectdb ব্যবহার করে বিদ্যমান ডাটাবেজের সাথে Django যুক্ত করতে পারবেন।

  • inspectdb বিদ্যমান টেবিলের জন্য দ্রুত মডেল জেনারেট করে।
  • মডেল কাস্টমাইজ করে Django ORM ব্যবহার করে CRUD অপারেশন করা যায়।
    এটি একটি বাস্তব উদাহরণ যেখানে আপনি আপনার বিদ্যমান ডাটাবেজ Django দিয়ে পরিচালনা করতে পারবেন।

How can we help?