Python phase 3 moringa revamp
Tags: python, backenddevelopment, dsa, learning
Published: 2024-06-14 20:02:45

What I've Learned in Four Weeks: From Python Basics to SQLAlchemy

**<u>Introduction</u>**

Over the past four weeks, I've embarked on an exciting journey to master Python programming. Starting from the basics, I gradually delved into more advanced topics, culminating in the use of SQLAlchemy for database interactions. In this blog post, I will share my learning journey, highlighting key concepts and showcasing some code samples to illustrate what I've learned.

**<u>Week 1: Getting Started with Python</u>**
My journey began with the fundamentals of Python. During this week, I focused on understanding the syntax and basic constructs of the language.

Key Concepts
Variables and Data Types: I learned about different data types such as integers, floats, strings, and booleans.
Control Structures: I explored if-else statements, for and while loops, and how to use them to control the flow of my programs.
Functions: I understood the importance of functions for code reusability and modularity.
Code Sample: Basic Python

`def greet(name):
    return f"Hello, {name}!"

print(greet("World"))`

**<u>Week 2: Data Structures and Libraries</u>**
In the second week, I focused on Python's built-in data structures and some essential libraries.

Key Concepts
Lists, Tuples, and Dictionaries: I learned how to store and manipulate collections of data.
List Comprehensions: I discovered a concise way to create lists.
Libraries: I got introduced to libraries like math and datetime.
Code Sample: List Comprehensions

`squares = [x**2 for x in range(10)]
print(squares)`

**<u>Week 3: Object-Oriented Programming (OOP)</u>**
The third week was dedicated to understanding the principles of object-oriented programming in Python.

Key Concepts
Classes and Objects: I learned how to define classes and create objects.
Inheritance: I explored how to inherit attributes and methods from other classes.
Polymorphism and Encapsulation: I understood how to design flexible and reusable code.
Code Sample: OOP in Python

`class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        raise NotImplementedError("Subclasses must implement this method")

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

dog = Dog("Buddy")
print(dog.speak())`

**<u>Week 4: Working with Databases using SQLAlchemy</u>**
In the final week, I delved into SQLAlchemy, a powerful ORM (Object-Relational Mapping) library for Python, which allowed me to interact with databases seamlessly.

Key Concepts
Engine and Sessions: I learned how to set up the engine and create sessions to interact with the database.
Models and Schemas: I explored how to define models and map them to database tables.
CRUD Operations: I practised performing Create, Read, Update, and Delete operations using SQLAlchemy.

Code Sample: SQLAlchemy Basics

`from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker`

# Create an engine
engine = create_engine('sqlite:///example.db', echo=True)

# Define a base class for declarative class definitions
`Base = declarative_base()`

# Define a model
`class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)`

# Create the table
Base.metadata.create_all(engine)

# Create a new session
`Session = sessionmaker(bind=engine)
session = Session()`

# Add a new user
`new_user = User(name='Alice', age=30)
session.add(new_user)
session.commit()`

# Query the database
`users = session.query(User).all()
for user in users:
    print(user.name, user.age)`

**Conclusion**
The past four weeks have been incredibly rewarding. Starting from the basics of Python, progressing through data structures and OOP, and finally mastering SQLAlchemy has equipped me with a solid foundation for future projects. Each step has been a building block, and I am excited to continue expanding my knowledge and applying these skills to real-world applications.

If you're just starting with Python, I encourage you to take it one step at a time and enjoy the learning process. Happy coding!