मुझे दो डेटाबेस कनेक्ट करने की आवश्यकता है। डिफ़ॉल्ट डेटाबेस तय किया गया है लेकिन दूसरा एक गतिशील है, यह यूआरएल पर आधारित है।गतिशील डेटाबेस कनेक्शन फ्लास्क-एसक्यूएलकेमी
उदाहरण के लिए यदि यूआरएल है: yourapp.myweb.com तो दूसरी डेटाबेस नाम yourapp
मैं कोशिश init .py लेकिन इसकी निम्नलिखित मुझे दिखाओ त्रुटि में डेटाबेस से कनेक्ट हो जाएगा
builtins.AssertionError
AssertionError: A setup function was called after the first request was handled. This usually indicates a bug in the application where a module was not imported and decorators or other functionality was called too late.
To fix this make sure to import all your view modules, database models and everything related at a central place before the application starts serving requests.
यहाँ मेरी init .py है
from flask import Flask,session
from flask_sqlalchemy import SQLAlchemy
import os
app = Flask(__name__,static_url_path='/static')
# Database Connection
database = request.url.split("/")[2].split(".")[0]
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:[email protected]/main_database"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['SQLALCHEMY_BINDS'] = {
'user_db': 'mysql+pymysql://root:[email protected]/database_'+str(database), #dynamic Connection
}
db = SQLAlchemy(app)
db.create_all()
db.create_all(bind=['user_db'])
# db.init_app(app)
from . import views
यहाँ यहाँ viwe.py
@app.route('/login', methods = ['GET'])
def index():
try:
from .model import Users
# Some Code
except Exception as e:
raise e
# return "Failed to login ! Please try again."
है model.py
from application import db
class Users(db.Model):
__bind_key__ = 'user_db'
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key = True)
email = db.Column(db.String(50))
name = db.Column(db.String(50))
password = db.Column(db.String())
def __repr__(self):
return '<User %r>' % self.name
मुझे लगता है कि जब मैं अपना ऐप शुरू करता हूं तो इसका कोई अनुरोध नहीं होता है। इसलिए ऐसा हो सकता है .. –
यदि समस्या से ऊपर है तो कौन सा .py फ़ाइल डेटाबेस कनेक्ट करने के लिए सबसे अच्छा है? –
मॉड्यूल के शीर्ष स्तर पर '.model आयात उपयोगकर्ताओं' से रखने का प्रयास करें। – Fian