Django

⌘K
  1. Home
  2. Django
  3. Django তে কিভাবে কাজ করতে...
  4. Django Custom Management ...
  5. ০ ৩. কাস্টম কমান্ড বানিয়ে csv ফাইল ডেটাবেজ এ ইম্পোর্ট/এক্সপোর্ট করি

০ ৩. কাস্টম কমান্ড বানিয়ে csv ফাইল ডেটাবেজ এ ইম্পোর্ট/এক্সপোর্ট করি

ডেটা ইম্পোর্ট এর কোড বানাই

মনেকরি আমাদের csv ফাইলের স্ট্রাকচার নিচের মতো

name	price	description
Product 1	100.00	This is a great product.
Product 2	100.00	This is a Awesome product.
Product 3	100.00	This is a Good  product.
Product 4	100.00	This is a Gorgious product.

তাহলে আমরা সেই অনুযায়ী মডেল বানাই

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    description = models.TextField()

migrate database

python manage.py makemigrations
python manage.py migrate

import_csv.py নামে ফাইল বানাই management/commands ফোল্ডারে

import csv
from django.core.management.base import BaseCommand
from myapp.models import Product

class Command(BaseCommand):
    help = 'Import CSV data to the Product model'

    def add_arguments(self, parser):
        parser.add_argument('csv_file', type=str, help='The CSV file to import')

    def handle(self, *args, **options):
        csv_file = options['csv_file']

        with open(csv_file, 'r') as f:
            reader = csv.DictReader(f)

            for row in reader:
                product = Product()
                product.name = row['name']
                product.price = row['price']
                product.description = row['description']
                product.save()

        self.stdout.write('Successfully imported CSV data to the Product model')

মনেকরি আমার csv ডেটাটি F ড্রাইভে এ আছে mydata.csv নামে এখন ওই ফাইলটির লোকেশন আমাকে দিতে হবে আর্গুমেন্ট হিসাবে।

python manage.py import_csv F:\mydata.csv

ডেটা এক্সপোর্ট এর কোড বানাই

#export_csv.py
import csv
from django.core.management.base import BaseCommand
from myapp.models import Product


class Command(BaseCommand):
    help = 'Export product data to a CSV file'

    def add_arguments(self, parser):
        parser.add_argument('output_file', type=str, help='The output file path (e.g., products.csv)')

    def handle(self, *args, **options):
        output_file = options['output_file']

        # Fetch all products from the database
        products = Product.objects.all()

        # Create a CSV writer object
        with open(output_file, 'w') as f:
            writer = csv.writer(f)

            # Write the header row
            writer.writerow(['Name', 'Price', 'Description'])

            # Write data for each product
            for product in products:
                writer.writerow([product.name, product.price, product.description])

        self.stdout.write('Successfully exported product data to %s' % output_file)

python manage.py export_csv products.csv

How can we help?