Spaces:
Sleeping
Sleeping
| #%% | |
| # create_engine: This function creates a new SQLAlchemy “engine,” | |
| # which is an interface to the database. It acts as the core connection to | |
| # your database and manages the communication between your Python code and the database. | |
| from sqlalchemy import create_engine | |
| # declarative_base: This function is used to create a base class for our ORM models. | |
| # All of your database table classes (models) will inherit from this base class. | |
| # This base class also ties each model to a corresponding table in the database. | |
| from sqlalchemy.ext.declarative import declarative_base | |
| # sessionmaker: This is a factory function for creating new Session objects. | |
| # Sessions are used to manage the operations (queries, updates, etc.) on | |
| # the database in a transaction-safe way. They provide an interface for | |
| # interacting with the database. | |
| from sqlalchemy.orm import sessionmaker | |
| # This line defines the URL for your database connection. | |
| # SQLAlchemy uses this URL to determine what type of database you’re | |
| # connecting to, and where it’s located. | |
| # sqlite:// tells SQLAlchemy that you are using SQLite as the database engine. | |
| # ./test.db specifies the relative path to the database file (test.db) in the | |
| # current directory (./). SQLite stores the entire database as a single file on disk | |
| SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db" | |
| # This line creates the database engine by passing the SQLALCHEMY_DATABASE_URL to the | |
| # create_engine function. The engine is responsible for managing the connection to the database. | |
| # connect_args={"check_same_thread": False}: This argument is specific to SQLite. By default, | |
| # SQLite does not allow multiple threads to interact with the database. The check_same_thread | |
| # argument disables this check, allowing the engine to be used in a multi-threaded environment. | |
| # This is necessary for many web applications (like FastAPI) that might have multiple requests | |
| # hitting the database simultaneously. | |
| engine = create_engine( | |
| SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} | |
| ) | |
| # you create a factory for database sessions. SessionLocal will be used to create individual sessions, | |
| # which are needed to interact with the database (querying data, inserting/updating records, etc.). | |
| # 1. autocommit=False: This means that changes (inserts, updates, deletes) to the database will not be | |
| # committed automatically. You will need to explicitly commit transactions using session.commit(). | |
| # This gives you better control over when data is saved. | |
| # 2. autoflush=False: This disables automatic flushing. Flushing is the process of sending any pending | |
| # changes to the database before executing queries. With autoflush=False, the session will not | |
| # automatically send updates to the database unless you explicitly tell it to by calling flush() or commit(). | |
| # It prevents unexpected database updates. | |
| # 3. bind=engine: This ties the session to the database engine. Any session created with SessionLocal() | |
| # will use the engine to communicate with the database. | |
| SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) | |
| # This line creates a base class for all of your ORM models (i.e., classes that represent database tables). | |
| # Each model (class) will inherit from Base, and SQLAlchemy will use this base class to generate the | |
| # necessary SQL statements to create tables and handle CRUD operations (Create, Read, Update, Delete). | |
| Base = declarative_base() | |
| # %% | |