Database Models তৈরি করা গাইড ও নোট

Web Development - ওয়েব২পাই (Web2Py) - Models এবং Database Interaction
193

Web2Py তে Database Models তৈরি করা অ্যাপ্লিকেশন ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ। Models হল অ্যাপ্লিকেশনের ডেটা লজিক এবং ডাটাবেসের সঙ্গে যোগাযোগের মাধ্যম। Web2Py এর ডেটাবেস মডেল তৈরি করতে DAL (Database Abstraction Layer) ব্যবহার করা হয়, যা বিভিন্ন ধরনের ডাটাবেস (যেমন SQLite, MySQL, PostgreSQL) সহজে পরিচালনা করতে সাহায্য করে।

Web2Py তে ডেটাবেস মডেল তৈরি করার জন্য models ফোল্ডারে ফাইল তৈরি করা হয় এবং সেখানে ডেটাবেস টেবিল, ফিল্ড এবং সম্পর্ক নির্ধারণ করা হয়।


Web2Py তে Database Model তৈরি করার পদ্ধতি

১. ডেটাবেস সংযোগ

প্রথমে, Web2Py-তে ডেটাবেস সংযোগের জন্য DAL (Database Abstraction Layer) ব্যবহার করতে হবে। এর মাধ্যমে আপনি Web2Py তে ডাটাবেসের সাথে যোগাযোগ করতে পারবেন।

Web2Py ডিফল্টভাবে SQLite ডাটাবেস ব্যবহার করে, তবে আপনি অন্য ডাটাবেস সিস্টেম যেমন MySQL বা PostgreSQL ব্যবহারও করতে পারেন। নিচে SQLite ডাটাবেস ব্যবহার করার একটি উদাহরণ দেখানো হলো।

২. ডেটাবেস মডেল ফাইল তৈরি করা

Web2Py তে models ফোল্ডারের মধ্যে ডেটাবেস মডেল ফাইল রাখা হয়। আপনি একটি নতুন মডেল ফাইল তৈরি করে তার মধ্যে ডেটাবেস টেবিল এবং সম্পর্ক সংজ্ঞা দিতে পারেন।

ধরা যাক, একটি বই (Book) সম্পর্কিত অ্যাপ্লিকেশন তৈরি করছি, যেখানে আমরা বইয়ের তথ্য সংরক্ষণ করব।

models/db.py ফাইলের মধ্যে ডেটাবেস মডেল সংজ্ঞা করা হবে।

# models/db.py
# ডেটাবেস সংযোগ স্থাপন
db = DAL('sqlite://storage.sqlite')

# টেবিল সংজ্ঞা
db.define_table('book',
    Field('title', 'string', requires=IS_NOT_EMPTY()),
    Field('author', 'string', requires=IS_NOT_EMPTY()),
    Field('published_year', 'integer'),
    Field('price', 'double'),
    Field('created_at', 'datetime', default=request.now),
    format='%(title)s')  # প্রদর্শনে বইয়ের শিরোনাম থাকবে

এখানে book নামে একটি টেবিল তৈরি করা হয়েছে এবং এতে বিভিন্ন ধরনের Field (যেমন title, author, published_year) সংজ্ঞায়িত করা হয়েছে। requires এবং default কন্ডিশনও এখানে উল্লেখ করা হয়েছে।


৩. ফিল্ড টাইপ (Field Types)

Web2Py তে বিভিন্ন ধরনের ফিল্ড টাইপ রয়েছে, যেমন:

  • 'string': টেক্সট ফিল্ড।
  • 'integer': পূর্ণসংখ্যা ফিল্ড।
  • 'double': দশমিক সংখ্যা।
  • 'boolean': সত্য/মিথ্যা মান।
  • 'datetime': তারিখ এবং সময়।
  • 'reference': অন্য টেবিলের রেফারেন্স।

উদাহরণ:

Field('author_id', 'reference author')  # এটি 'author' টেবিলের সাথে সম্পর্কযুক্ত হবে

৪. ডেটাবেস টেবিল এবং রিলেশন

Web2Py তে টেবিলের মধ্যে সম্পর্ক তৈরি করা যায়। উদাহরণস্বরূপ, যদি একটি author টেবিল থাকে এবং আপনি বইয়ের author_id ফিল্ডে author টেবিলের রেফারেন্স চান, তাহলে আপনি এইভাবে সেটআপ করতে পারেন:

# models/db.py
db.define_table('author',
    Field('name', 'string', requires=IS_NOT_EMPTY()),
    Field('birthdate', 'date'),
    format='%(name)s')

db.define_table('book',
    Field('title', 'string', requires=IS_NOT_EMPTY()),
    Field('author_id', 'reference author'),  # 'author' টেবিলের রেফারেন্স
    Field('price', 'double'),
    format='%(title)s')

এখানে author_id ফিল্ডটি author টেবিলের সাথে সম্পর্কযুক্ত।


৫. ডেটাবেস মডেল ব্যবহার করা

ডেটাবেস মডেল তৈরি করার পর, আপনি ডেটা এন্ট্রি, আপডেট, নির্বাচন এবং মুছে ফেলাসহ অন্যান্য ডেটাবেস অপারেশন করতে পারেন।

  1. ডেটা সিলেক্ট করা:

    # controllers/default.py
    def show_books():
        books = db().select(db.book.ALL)  # সমস্ত বইয়ের তথ্য
        return dict(books=books)
    
  2. নতুন রেকর্ড ইনসার্ট করা:

    # controllers/default.py
    def add_book():
        form = SQLFORM(db.book)  # 'book' টেবিলের জন্য ফর্ম
        if form.process().accepted:
            response.flash = 'Book added successfully!'
        elif form.errors:
            response.flash = 'Please correct the errors.'
        return dict(form=form)
    
  3. ডেটা আপডেট করা:

    # controllers/default.py
    def update_book():
        book = db.book(id=1)  # ID 1 এর বই
        if book:
            book.update_record(title='Updated Title')
            response.flash = 'Book updated!'
        return dict(book=book)
    
  4. ডেটা মুছে ফেলা:

    # controllers/default.py
    def delete_book():
        db(db.book.id == 1).delete()  # ID 1 এর বই মুছে ফেলা
        response.flash = 'Book deleted!'
        return redirect(URL('show_books'))
    

৬. ডেটাবেস মডেল ব্যবহারকারীর ফর্ম

Web2Py তে SQLFORM ব্যবহার করে ডেটাবেস মডেল ফর্ম তৈরি করা যায়। এর মাধ্যমে ইউজার ইনপুটের মাধ্যমে ডেটা ইনসার্ট, আপডেট বা ডিলিট করা সম্ভব।

# controllers/default.py
def add_book():
    form = SQLFORM(db.book)  # book টেবিলের জন্য ফর্ম তৈরি
    if form.process().accepted:
        response.flash = 'Book added successfully!'
    elif form.errors:
        response.flash = 'Please correct the errors.'
    return dict(form=form)

এখানে SQLFORM(db.book) ব্যবহার করে একটি ফর্ম তৈরি করা হয়েছে, যেখানে ইউজার বইয়ের তথ্য ইনপুট করতে পারবেন।


সারাংশ

Web2Py তে ডেটাবেস মডেল তৈরি করার জন্য DAL (Database Abstraction Layer) ব্যবহার করা হয়। মডেল ফাইলের মধ্যে ডেটাবেস টেবিল, ফিল্ড এবং সম্পর্ক সংজ্ঞায়িত করা হয়। Web2Py-তে আপনি ডেটাবেস মডেল ব্যবহার করে ডেটা সিলেক্ট, ইনসার্ট, আপডেট, ডিলিট এবং অন্যান্য ডেটাবেস অপারেশন খুব সহজে করতে পারেন। SQLFORM এর মাধ্যমে ইউজারদের ডেটা ইনপুট করার জন্য ফর্ম তৈরি করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...