Для новичков в разработке программного обеспечения одной из самых захватывающих и сложных задач является создание первого значимого проекта. Для меня это было приложение Event Management CLI. Этот проект не только помог мне укрепить мое понимание Python, но также познакомил меня с SQLAlchemy ORM, библиотеками CLI, такими как Click, и общими передовыми практиками разработки программного обеспечения. Размышляя об этом путешествии, я понимаю, как многому я научился и как эти навыки сформировали мою уверенность как разработчика.
Прежде чем погрузиться в этот проект, мое путешествие началось с основ Python. Изучение синтаксиса Python, структур управления, типов данных и функций стало основой, сделавшей возможным выполнение этого проекта. Я помню дни написания простых скриптов, отладки ошибок и маленьких побед, которые приходили с каждым успешным запуском. Понимание этих основ имело решающее значение, поскольку они составляют основу любого проекта Python.
Одним из самых полезных аспектов, которые я узнал на раннем этапе, было то, как управлять различными структурами данных, особенно списками, словарями и кортежами, и манипулировать ими. Эти навыки были необходимы, когда я начал работать над приложением Event Management CLI, где мне приходилось эффективно хранить и обрабатывать множество фрагментов данных.
Первым шагом в создании приложения CLI для управления событиями была настройка среды. Использование Pipenv для управления виртуальной средой было новым опытом. Это упростило процесс управления зависимостями и обеспечило изоляцию среды проекта от остальной части моей системы.
Вот как я настраиваю виртуальную среду:
pipenv install pipenv shell
Затем я инициализировал Alembic для миграции базы данных. Этот шаг имел решающее значение для управления изменениями схемы базы данных с течением времени.
alembic init migrations alembic revision --autogenerate -m "Create Initial models" alembic upgrade head
Суть приложения заключается в его моделях. Используя SQLAlchemy ORM, я определил модели для пользователей, событий, расписаний и участников. Именно здесь сошлось мое понимание классов Python и 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. Определение связей между таблицами с помощью ORM SQLAlchemy облегчило управление данными и выполнение запросов. Например, установление связи «один ко многим» между пользователями и событиями позволило мне легко запрашивать все события, созданные конкретным пользователем.
Вот как я определил связь между пользователем и событием:
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 приложения была реализована с помощью Click. Эта библиотека упростила создание интерфейса командной строки, который мог бы обрабатывать различные команды и параметры. Вот фрагмент из файла 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()
Оглядываясь назад, можно сказать, что этот проект стал важной вехой на моем пути как разработчика. Все началось с изучения основ Python, которые заложили основу для понимания более сложных концепций. Проект приложения Event Management CLI представлял собой идеальное сочетание Python, SQL и интерфейсов командной строки, обеспечивая комплексный опыт обучения.
Одним из главных выводов этого проекта стала важность структуры и организации кодирования. Использование виртуальных сред, управление зависимостями и поддержание чистой структуры проекта сделали процесс разработки более плавным и эффективным.
Более того, практический опыт работы с SQLAlchemy ORM и Click укрепил полученные мною теоретические знания. Понимание того, как определять связи между таблицами, выполнять миграцию баз данных и создавать удобный интерфейс командной строки, было бесценным навыком.
Создание приложения CLI для управления событиями было сложным, но полезным опытом. Он укрепил мое понимание Python и SQLAlchemy, познакомил меня с лучшими практиками разработки программного обеспечения и улучшил мои навыки решения проблем. Любому новичку, желающему развиваться как разработчик, я настоятельно рекомендую погрузиться в такой проект. Это отличный способ применить полученные знания, открыть для себя новые инструменты и методы и создать что-то осязаемое, чем вы сможете гордиться.
https://github.com/migsldev/event-management-app
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3