flask_sqlalchemy
मॉड्यूल तुरंत अनुप्रयोग के साथ प्रारंभ होने की जरूरत नहीं है - आप इस के बजाय कर सकते हैं:
# apps.members.models
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Member(db.Model):
# fields here
pass
और फिर अपने एप्लिकेशन सेटअप में आप कॉल कर सकते हैं init_app
:
# apps.application.py
from flask import Flask
from apps.members.models import db
app = Flask(__name__)
# later on
db.init_app(app)
इस तरह आप चक्रीय आयात से बच सकते हैं।
यह पैटर्न करता नहीं की जरूरत आप एक फ़ाइल में अपने सभी मॉडलों के जगह। बस db
अपने प्रत्येक मॉडल मॉड्यूल में चर आयात करें ।
उदाहरण
# apps.shared.models
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
# apps.members.models
from apps.shared.models import db
class Member(db.Model):
# TODO: Implement this.
pass
# apps.reporting.members
from flask import render_template
from apps.members.models import Member
def report_on_members():
# TODO: Actually use arguments
members = Member.filter(1==1).all()
return render_template("report.html", members=members)
# apps.reporting.routes
from flask import Blueprint
from apps.reporting.members import report_on_members
reporting = Blueprint("reporting", __name__)
reporting.route("/member-report", methods=["GET","POST"])(report_on_members)
# apps.application
from flask import Flask
from apps.shared import db
from apps.reporting.routes import reporting
app = Flask(__name__)
db.init_app(app)
app.register_blueprint(reporting)
नोट: यह आपके द्वारा दी जाने वाली कुछ शक्ति का एक स्केच है - स्पष्ट रूप से थोड़ा अधिक है कि आप विकास को और भी आसान बनाने के लिए कर सकते हैं (एक create_app
पैटर्न का उपयोग करके , कुछ फ़ोल्डरों में ऑटो-रजिस्टरिंग ब्लूप्रिंट, आदि)