কাস্টম ডেটা টাইপ তৈরি এবং ব্যবহারের উদাহরণ

SQLite এর ডেটা টাইপ এবং কাস্টম ডেটা টাইপ - এসকিউলাইট (SQLite) - Database Tutorials

301

SQLite একটি ফাইলভিত্তিক ডেটাবেস সিস্টেম যা SQL (Structured Query Language) ব্যবহার করে ডাটাবেস পরিচালনা করে। SQLite তে আপনি কাস্টম ডেটা টাইপ তৈরি করতে পারেন, যা বিশেষ ধরনের ডেটা পরিচালনা করার জন্য উপকারী। SQLite ডিফল্টভাবে কিছু প্রাথমিক ডেটা টাইপ যেমন INTEGER, TEXT, REAL, BLOB, ইত্যাদি সমর্থন করে, তবে আপনি কাস্টম ডেটা টাইপও তৈরি করতে পারেন।

SQLite তে কাস্টম ডেটা টাইপ তৈরি করতে, আপনি CREATE TYPE কমান্ড ব্যবহার করতে পারেন, অথবা User Defined Functions (UDFs) ব্যবহার করতে পারেন।


১. কাস্টম ডেটা টাইপ তৈরি করা (SQLite এ UDF ব্যবহার)

SQLite-এ কাস্টম ডেটা টাইপ তৈরি করতে সরাসরি CREATE TYPE কমান্ড নেই, তবে আপনি User Defined Functions (UDFs) ব্যবহার করে কাস্টম ডেটা টাইপ তৈরি করতে পারেন।

উদাহরণ: কাস্টম phone_number ডেটা টাইপ

ধরা যাক, আপনি একটি কাস্টম ডেটা টাইপ তৈরি করতে চান যা ফোন নম্বর সংরক্ষণ করবে। SQLite এর TEXT ডেটা টাইপ ব্যবহার করা হবে, কিন্তু আপনি নিশ্চিত করতে চান যে এটি একটি বৈধ ফোন নম্বর।

এখানে Python দিয়ে SQLite তে কাস্টম UDF (User Defined Function) তৈরি করার উদাহরণ দেওয়া হলো।


Python দিয়ে কাস্টম ডেটা টাইপ উদাহরণ

১.1 Python SQLite UDF তৈরি করা

SQLite এর সাথে Python ব্যবহার করে কাস্টম ডেটা টাইপ তৈরির জন্য প্রথমে Python এর sqlite3 লাইব্রেরি ব্যবহার করতে হবে।

import sqlite3
import re

# কাস্টম UDF তৈরি করা
def validate_phone_number(phone_number):
    # ফোন নম্বরের বৈধতা যাচাই
    if re.match(r"^\+?[0-9]{10,15}$", phone_number):
        return phone_number
    else:
        raise ValueError("Invalid phone number format")

# SQLite ডাটাবেস তৈরি এবং UDF রেজিস্টার করা
conn = sqlite3.connect('example.db')

# কাস্টম ফাংশন রেজিস্টার করা
conn.create_function("validate_phone", 1, validate_phone_number)

# একটি টেবিল তৈরি করা
conn.execute('''CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    phone_number TEXT
)''')

# কাস্টম ফোন নম্বর যাচাইয়ের সাথে ডাটা ইনসার্ট করা
try:
    conn.execute("INSERT INTO users (name, phone_number) VALUES (?, ?)", 
                 ('Alice', '+1234567890'))  # Valid phone number
    conn.execute("INSERT INTO users (name, phone_number) VALUES (?, ?)", 
                 ('Bob', '12345'))  # Invalid phone number, will raise an error
except ValueError as e:
    print(f"Error: {e}")

# ডাটাবেস থেকে ডাটা পড়া
cursor = conn.execute("SELECT * FROM users")
for row in cursor:
    print(row)

# সংযোগ বন্ধ করা
conn.commit()
conn.close()

ব্যাখ্যা:

  1. validate_phone_number ফাংশনটি একটি কাস্টম ডেটা টাইপ হিসেবে কাজ করে, যা ফোন নম্বরের বৈধতা পরীক্ষা করে।
  2. create_function ফাংশনটি SQLite ডাটাবেসে validate_phone নামের একটি নতুন ফাংশন রেজিস্টার করে।
  3. ইনসার্ট অপারেশনে এটি ফোন নম্বরের জন্য কাস্টম ফাংশন ব্যবহার করে, যাতে এটি সঠিক ফরম্যাটে থাকে।
  4. যদি ইনপুটে ভুল ফরম্যাটের ফোন নম্বর দেওয়া হয়, তবে এটি একটি ValueError ত্রুটি ছুড়ে দেবে।

২. কাস্টম ডেটা টাইপের ব্যবহার

SQLite তে কাস্টম ডেটা টাইপের ব্যবহার অনেক ক্ষেত্রে উপকারী হতে পারে, বিশেষ করে যখন আপনার এমন ডেটা প্রয়োজন যা সাধারণ ডেটা টাইপে সংরক্ষণ করা যায় না বা আপনি কিছু নির্দিষ্ট বৈধতা যাচাই করতে চান।

উদাহরণ: কাস্টম email ডেটা টাইপ

ধরা যাক, আপনি একটি কাস্টম email ডেটা টাইপ তৈরি করতে চান যা ইমেল অ্যাড্রেসের বৈধতা যাচাই করবে। আপনি উপরে যেমন ফোন নম্বরের উদাহরণ দেখেছিলেন, তেমনই validate_email নামের একটি ইউজার ডিফাইন্ড ফাংশন তৈরি করতে পারেন যা ইমেল ঠিকানার বৈধতা যাচাই করবে।

import sqlite3
import re

# কাস্টম UDF তৈরি করা
def validate_email(email):
    # ইমেল ঠিকানার বৈধতা যাচাই
    if re.match(r"[^@]+@[^@]+\.[^@]+", email):
        return email
    else:
        raise ValueError("Invalid email address format")

# SQLite ডাটাবেস তৈরি এবং UDF রেজিস্টার করা
conn = sqlite3.connect('example.db')

# কাস্টম ফাংশন রেজিস্টার করা
conn.create_function("validate_email", 1, validate_email)

# একটি টেবিল তৈরি করা
conn.execute('''CREATE TABLE IF NOT EXISTS contacts (
    id INTEGER PRIMARY KEY,
    name TEXT,
    email TEXT
)''')

# কাস্টম ইমেল যাচাইয়ের সাথে ডাটা ইনসার্ট করা
try:
    conn.execute("INSERT INTO contacts (name, email) VALUES (?, ?)", 
                 ('Alice', 'alice@example.com'))  # Valid email
    conn.execute("INSERT INTO contacts (name, email) VALUES (?, ?)", 
                 ('Bob', 'bob@com'))  # Invalid email, will raise an error
except ValueError as e:
    print(f"Error: {e}")

# ডাটাবেস থেকে ডাটা পড়া
cursor = conn.execute("SELECT * FROM contacts")
for row in cursor:
    print(row)

# সংযোগ বন্ধ করা
conn.commit()
conn.close()

ব্যাখ্যা:

  1. validate_email ফাংশনটি একটি কাস্টম ডেটা টাইপ হিসেবে কাজ করে, যা ইমেল ঠিকানার বৈধতা পরীক্ষা করে।
  2. create_function ফাংশনটি SQLite ডাটাবেসে validate_email নামের একটি নতুন ফাংশন রেজিস্টার করে।
  3. ইনসার্ট অপারেশনে এটি ইমেল অ্যাড্রেসের জন্য কাস্টম ফাংশন ব্যবহার করে, যাতে তা সঠিক ফরম্যাটে থাকে।

সারাংশ

SQLite তে কাস্টম ডেটা টাইপ তৈরি করা সম্ভব, তবে SQLite তে সরাসরি CREATE TYPE কমান্ড নেই। আপনি User Defined Functions (UDFs) ব্যবহার করে কাস্টম ডেটা টাইপ তৈরি করতে পারেন। Python এর মাধ্যমে SQLite তে কাস্টম ডেটা টাইপ তৈরি করার মাধ্যমে আপনি আপনার ডাটাবেসের মধ্যে কিছু নির্দিষ্ট বৈধতা যাচাই, যেমন ফোন নম্বর বা ইমেল ঠিকানা যাচাই, সহজে করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...