{"id":18695944,"url":"https://github.com/rahulmoundekar/flask_sqlalchemy_one_to_many_relationship_example","last_synced_at":"2026-04-10T20:52:11.907Z","repository":{"id":90410967,"uuid":"257855340","full_name":"rahulmoundekar/flask_sqlalchemy_one_to_many_relationship_example","owner":"rahulmoundekar","description":"flask one 2 many ","archived":false,"fork":false,"pushed_at":"2020-04-24T06:55:50.000Z","size":17,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-28T03:27:23.845Z","etag":null,"topics":["bootstrap-template","flask","flask-application","flask-sqlalchemy","flask-web","folder-structure","html5","mvc-architecture","mvt","mysql-database"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rahulmoundekar.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-22T09:34:48.000Z","updated_at":"2024-03-02T21:06:13.000Z","dependencies_parsed_at":"2023-04-05T10:46:41.539Z","dependency_job_id":null,"html_url":"https://github.com/rahulmoundekar/flask_sqlalchemy_one_to_many_relationship_example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rahulmoundekar%2Fflask_sqlalchemy_one_to_many_relationship_example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rahulmoundekar%2Fflask_sqlalchemy_one_to_many_relationship_example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rahulmoundekar%2Fflask_sqlalchemy_one_to_many_relationship_example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rahulmoundekar%2Fflask_sqlalchemy_one_to_many_relationship_example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rahulmoundekar","download_url":"https://codeload.github.com/rahulmoundekar/flask_sqlalchemy_one_to_many_relationship_example/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239558910,"owners_count":19658927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap-template","flask","flask-application","flask-sqlalchemy","flask-web","folder-structure","html5","mvc-architecture","mvt","mysql-database"],"created_at":"2024-11-07T11:16:41.191Z","updated_at":"2025-11-08T14:30:27.931Z","avatar_url":"https://github.com/rahulmoundekar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flask CURD SqlAlchemy one to many relationship example :\n\n#### Project Setup\n\n  - Making the project as :\n     ```\n    mkdir flask_sqlalchemy_one_to_many_relationship_example\n    cd flask_sqlalchemy_one_to_many_relationship_example\n    ```\n  - Install flask:\n    ```\n     pip install flask\n    ```\n - Integrating SqlAlchemy\n    ```\n    pip install sqlalchemy\n    ```\n - Create EmployeeManagementSystem.py for development \n - create folder structure like this :\n \n    ![N|Solid](structure.PNG)\n    \n - create db.py\n    ```\n     from flask_sqlalchemy import SQLAlchemy\n     db = SQLAlchemy()\n    ```  \n       \n  - Declaring Models: [models/app_model.py]\n     ```\n    from db.db import db\n        \n    class Employee(db.Model):\n        id = db.Column(db.Integer, primary_key=True)\n        name = db.Column(db.String(255), nullable=False)\n        email = db.Column(db.String(255), nullable=False)\n        contact = db.Column(db.String(10), nullable=False)\n        addresses = db.relationship('Address', backref=db.backref('employee', uselist=True),\n                                    cascade='all, delete-orphan', lazy=True, uselist=True)\n        # delete parent record in one to many relationship in flask cascade='all, delete-orphan'\n    \n    \n    class Address(db.Model):\n        id = db.Column(db.Integer, primary_key=True)\n        addr = db.Column(db.String(255), nullable=False)\n        employee_id = db.Column(db.Integer, db.ForeignKey('employee.id'), unique=True, nullable=False)\n    \n        def __init__(self, addr):\n            self.addr = addr\n    \n\n    ```\n - create settings.py for configuration\n     ```\n     # configuration\n    class Config:\n        DEBUG = True\n        # db\n        SQLALCHEMY_DATABASE_URI = 'mysql://root:root@localhost/djangoapp'\n        SQLALCHEMY_TRACK_MODIFICATIONS = False\n    ```\n    \n - Make a runserver configuration\n     ``` \n    from flask import Flask, render_template, request, redirect, flash\n    from sqlalchemy.exc import IntegrityError\n    \n    from db.db import db\n    from models.app_model import Employee, Address\n    \n    app = Flask(__name__)\n    app.secret_key = 'asrtarstaursdlarsn'\n    app.config.from_object('settings.Config')\n    \n    # initialization\n    db.init_app(app)\n    \n    \n    @app.route(\"/\", methods=['GET', 'POST'])\n    @app.route(\"/\u003cint:employee_id\u003e\", methods=['GET'])\n    def employeeHome(employee_id=None):\n        if request.method == 'POST':\n            # person data\n            pid = request.form.get('id')\n            name = request.form.get('name')\n            contact = request.form.get('contact')\n            email = request.form.get('email')\n            # license data\n            address_list = []\n    \n            for addressValue in zip(request.form.getlist('address')):\n                address_list.append(Address(addressValue[0]))\n    \n            print(address_list)\n            if pid:  # if id present update records\n                employee = Employee.query.filter_by(id=pid).first()\n                employee.name = name\n                employee.email = email\n                employee.contact = contact\n                employee.addresses = address_list\n                db.session.commit()\n                flash('Looks like you have changed your Details!', \"success\")\n            else:\n                # id not None save record\n                try:\n                    employee_entry = Employee(name=name, email=email, contact=contact)\n                    employee_entry.addresses = address_list\n                    db.session.add(employee_entry)\n                    db.session.commit()\n                    flash('Employee Successfully saved!', \"success\")\n                except IntegrityError as e:\n                    flash(e, 'Something went wrong please try again later', \"danger\")\n        employee = None\n        addresses = [None, None]\n    \n        if employee_id:  # load record form edit form data\n            employee = Employee.query.filter_by(id=employee_id).first()\n            addresses = Address.query.filter_by(employee_id=employee_id)\n        employees = Employee.query.all()\n        return render_template('index.html', employees=employees, employee=employee, addresses=addresses)\n    \n    \n    @app.route(\"/delete/\u003cint:employee_id\u003e\", methods=['GET'])\n    def deleteEmployee(employee_id):\n        try:\n            employee = Employee.query.filter_by(id=employee_id).first()\n            print(employee)\n            if employee:\n                db.session.delete(employee)\n                db.session.commit()\n                flash('Looks like you have changed your Details!', \"success\")\n            else:\n                flash('Could not find any Employee to delete', \"danger\")\n        except IntegrityError as e:\n            flash('Something went wrong please try again later', \"danger\")\n        return redirect(\"/\")\n    \n    \n    # run always put in last statement or put after all @app.route\n    if __name__ == '__main__':\n        app.run(host='localhost')\n    \n    # manager.run()\n\n    ```\n - create html file inside templates folder\n    * check project directory for index.html file\n    \n \n - In order to run app:\n    ```\n\t  python app.py\n    ```\n\n - run on your browser\n    * Your should run at: http://127.0.0.1:5000/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frahulmoundekar%2Fflask_sqlalchemy_one_to_many_relationship_example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frahulmoundekar%2Fflask_sqlalchemy_one_to_many_relationship_example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frahulmoundekar%2Fflask_sqlalchemy_one_to_many_relationship_example/lists"}