"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > इवेंट मैनेजमेंट सीएलआई ऐप बनाने की मेरी यात्रा

इवेंट मैनेजमेंट सीएलआई ऐप बनाने की मेरी यात्रा

2024-08-25 को प्रकाशित
ब्राउज़ करें:261

My Journey Creating an Event Management CLI App

इवेंट मैनेजमेंट सीएलआई ऐप बनाने की मेरी यात्रा

परिचय

सॉफ्टवेयर विकास में एक शुरुआतकर्ता के रूप में, सबसे रोमांचक और चुनौतीपूर्ण कार्यों में से एक अपना पहला महत्वपूर्ण प्रोजेक्ट बनाना है। मेरे लिए, यह इवेंट मैनेजमेंट सीएलआई एप्लिकेशन था। इस परियोजना ने न केवल मुझे पायथन के बारे में मेरी समझ को मजबूत करने में मदद की, बल्कि मुझे SQLAlchemy ORM, क्लिक जैसी CLI लाइब्रेरी और सॉफ्टवेयर विकास की सामान्य सर्वोत्तम प्रथाओं से भी परिचित कराया। इस यात्रा पर विचार करते हुए, मुझे एहसास हुआ कि मैंने कितना कुछ सीखा है और कैसे इन कौशलों ने एक डेवलपर के रूप में मेरे आत्मविश्वास को आकार दिया है।

शुरुआत: पायथन के बुनियादी सिद्धांतों को सीखना

इस परियोजना में उतरने से पहले, मेरी यात्रा पायथन की बुनियादी बातों से शुरू हुई। पायथन के सिंटैक्स, नियंत्रण संरचनाओं, डेटा प्रकारों और कार्यों को सीखना वह आधार था जिसने इस परियोजना से निपटना संभव बनाया। मुझे सरल स्क्रिप्ट लिखने, त्रुटियों को डिबग करने और हर सफल दौड़ के साथ मिलने वाली छोटी-छोटी जीत के दिन याद हैं। इन बुनियादी सिद्धांतों को समझना महत्वपूर्ण था क्योंकि वे किसी भी पायथन परियोजना का आधार बनते हैं।

सबसे उपयोगी पहलुओं में से एक जो मैंने शुरू में सीखा था वह यह था कि विभिन्न डेटा संरचनाओं, विशेष रूप से सूचियों, शब्दकोशों और टुपल्स को कैसे प्रबंधित और हेरफेर किया जाए। ये कौशल तब आवश्यक थे जब मैंने इवेंट मैनेजमेंट सीएलआई ऐप पर काम करना शुरू किया, जहां मुझे डेटा के कई टुकड़ों को कुशलतापूर्वक संग्रहीत और संभालना था।

परियोजना में गोता लगाना: पर्यावरण की स्थापना करना

इवेंट मैनेजमेंट सीएलआई ऐप बनाने में पहला कदम पर्यावरण स्थापित करना था। आभासी पर्यावरण प्रबंधन के लिए पिपेनव का उपयोग करना एक नया अनुभव था। इसने निर्भरता के प्रबंधन की प्रक्रिया को सुव्यवस्थित किया और यह सुनिश्चित किया कि परियोजना का वातावरण मेरे बाकी सिस्टम से अलग हो।

यहां बताया गया है कि मैं आभासी वातावरण कैसे स्थापित करता हूं:

pipenv install
pipenv shell

इसके बाद, मैंने डेटाबेस माइग्रेशन के लिए एलेम्बिक को आरंभ किया। समय के साथ डेटाबेस स्कीमा परिवर्तनों को प्रबंधित करने के लिए यह कदम महत्वपूर्ण था।

alembic init migrations
alembic revision --autogenerate -m "Create Initial models"
alembic upgrade head

मॉडलों का निर्माण

एप्लिकेशन का मूल इसके मॉडल में निहित है। SQLAlchemy ORM का उपयोग करके, मैंने उपयोगकर्ताओं, घटनाओं, शेड्यूल और उपस्थित लोगों के लिए मॉडल परिभाषित किए। यहीं पर पाइथॉन कक्षाओं और SQLAlchemy के बारे में मेरी समझ एक साथ आई। यहां models.py फ़ाइल का एक स्निपेट है:

from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, sessionmaker

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String, unique=True, nullable=False)

class Event(Base):
    __tablename__ = 'events'
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    description = Column(String)
    user_id = Column(Integer, ForeignKey('users.id'))

    user = relationship('User', back_populates='events')

class EventSchedule(Base):
    __tablename__ = 'event_schedules'
    id = Column(Integer, primary_key=True)
    event_id = Column(Integer, ForeignKey('events.id'))
    start_time = Column(DateTime, nullable=False)
    end_time = Column(DateTime, nullable=False)

    event = relationship('Event', back_populates='schedules')

class Attendee(Base):
    __tablename__ = 'attendees'
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    event_id = Column(Integer, ForeignKey('events.id'))

    event = relationship('Event', back_populates='attendees')

User.events = relationship('Event', order_by=Event.id, back_populates='user')
Event.schedules = relationship('EventSchedule', order_by=EventSchedule.id, back_populates='event')
Event.attendees = relationship('Attendee', order_by=Attendee.id, back_populates='event')

एक उपयोगी तकनीकी पहलू: SQLAlchemy में संबंध

इस परियोजना के दौरान मैंने जो सबसे उपयोगी तकनीकी पहलू सीखे उनमें से एक SQLAlchemy में रिश्तों को संभालना था। SQLAlchemy के ORM का उपयोग करके तालिकाओं के बीच संबंधों को परिभाषित करने से डेटा को प्रबंधित करना और क्वेरी निष्पादित करना आसान हो गया है। उदाहरण के लिए, उपयोगकर्ताओं और घटनाओं के बीच एक-से-अनेक संबंध स्थापित करने से मुझे किसी विशिष्ट उपयोगकर्ता द्वारा बनाई गई सभी घटनाओं को आसानी से क्वेरी करने की अनुमति मिली।

यहां बताया गया है कि मैंने उपयोगकर्ता और ईवेंट के बीच संबंध को कैसे परिभाषित किया:

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String, unique=True, nullable=False)
    events = relationship('Event', order_by='Event.id', back_populates='user')

class Event(Base):
    __tablename__ = 'events'
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    description = Column(String)
    user_id = Column(Integer, ForeignKey('users.id'))
    user = relationship('User', back_populates='events')

इस संबंध परिभाषा ने मुझे उपयोगकर्ता की घटनाओं पर आसानी से सवाल पूछने की अनुमति दी:

def get_user_events(user_id):
    user = session.query(User).filter(User.id == user_id).first()
    return user.events

सीएलआई का कार्यान्वयन

एप्लिकेशन का सीएलआई भाग क्लिक का उपयोग करके कार्यान्वित किया गया था। इस लाइब्रेरी ने एक कमांड-लाइन इंटरफ़ेस बनाना आसान बना दिया है जो विभिन्न कमांड और विकल्पों को संभाल सकता है। यहां cli.py फ़ाइल से एक स्निपेट है:

import click
from models import User, Event, EventSchedule, Attendee
from db import session

@click.group()
def cli():
    pass

@click.command()
def create_event():
    name = click.prompt('Enter event name')
    description = click.prompt('Enter event description')
    user_id = click.prompt('Enter user ID', type=int)
    event = Event(name=name, description=description, user_id=user_id)
    session.add(event)
    session.commit()
    click.echo('Event created!')

cli.add_command(create_event)

if __name__ == '__main__':
    cli()

पीछे मुड़कर

पीछे मुड़कर देखें, तो यह परियोजना एक डेवलपर के रूप में मेरी यात्रा में एक महत्वपूर्ण मील का पत्थर रही है। इसकी शुरुआत पायथन के बुनियादी सिद्धांतों को सीखने से हुई, जिसने अधिक जटिल अवधारणाओं को समझने के लिए आधार तैयार किया। इवेंट मैनेजमेंट सीएलआई ऐप प्रोजेक्ट पायथन, एसक्यूएल और कमांड-लाइन इंटरफेस का एक आदर्श मिश्रण था, जो एक व्यापक सीखने का अनुभव प्रदान करता था।

इस परियोजना की सबसे बड़ी सीख कोडिंग में संरचना और संगठन का महत्व था। आभासी वातावरण का उपयोग करना, निर्भरता का प्रबंधन करना और एक स्वच्छ परियोजना संरचना को बनाए रखना विकास प्रक्रिया को आसान और अधिक कुशल बनाता है।

इसके अलावा, SQLAlchemy ORM और क्लिक के साथ व्यावहारिक अनुभव ने मेरे द्वारा प्राप्त सैद्धांतिक ज्ञान को सुदृढ़ किया। तालिकाओं के बीच संबंधों को परिभाषित करने, डेटाबेस माइग्रेशन करने और उपयोगकर्ता के अनुकूल सीएलआई बनाने का तरीका समझना अमूल्य कौशल थे।

निष्कर्ष

इवेंट मैनेजमेंट सीएलआई एप्लिकेशन बनाना एक चुनौतीपूर्ण लेकिन पुरस्कृत अनुभव था। इसने पायथन और एसक्यूएलकेमी के बारे में मेरी समझ को मजबूत किया, मुझे सॉफ्टवेयर विकास में सर्वोत्तम प्रथाओं से परिचित कराया और मेरी समस्या-समाधान कौशल को बढ़ाया। एक डेवलपर के रूप में विकसित होने की चाह रखने वाले किसी भी शुरुआती व्यक्ति के लिए, मैं इस तरह की परियोजना में गोता लगाने की अत्यधिक अनुशंसा करता हूं। आपने जो सीखा है उसे लागू करने, नए उपकरण और तकनीकों की खोज करने और कुछ ऐसा मूर्त निर्माण करने का यह एक शानदार तरीका है जिस पर आप गर्व कर सकें।

https://github.com/migsldev/event-management-app

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/migsldev/my-journey-creating-an-event-management-cli-app-kkc?1 यदि कोई उल्लंघन है, तो हटाने के लिए कृपया [email protected] पर संपर्क करें यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3