Mohssen A Mohssen نشر 26 ديسمبر 2021 أرسل تقرير نشر 26 ديسمبر 2021 أحاول أن أقوم بفصل النماذج models في تطبيق فلاسك Flask، لذلك قمت بنقلهم إلى ملفات مختلفة على النحو التالي: الملف الأول الذي يحتوي على كائن SQLAlchemy: # ./shared/db.py from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() ثم أقوم بإستدعاء الملف السابق في app.py: from flask import Flask from flask_sqlalchemy import SQLAlchemy from shared.db import db app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'My connection string is here' db.init_app(app) وفي نموذج user.py: from shared.db import db class User(db.Model): id = db.Column(db.Integer, primary_key=True) email_address = db.Column(db.String(300), unique=True, nullable=False) password = db.Column(db.Text, nullable=False) المشكلة الآن أنه عندما أحاول أن أقوم بإنشاء الجداول من خلال db.create_all يظهر لي الخطأ التالي: No application found. Either work inside a view function or push an application context. كيف يمكنني إستخدام التابع db.create_all بشكل سليم؟ 1 اقتباس
1 سامح أشرف نشر 26 ديسمبر 2021 أرسل تقرير نشر 26 ديسمبر 2021 عندما تحاول الوصول إلى التطبيق الحالي current_app أو أي شيء يستعمله سوف تحصل على رسالة الخطأ التالية: RuntimeError: Working outside of application context. وهي مشابهة لرسالة الخطأ التي لديك، حيث أنك تحتاج إلى إستخدام app_context لعمل Push للـ context الخاص بالتطبيق بالشكل التالي: # في ملف app.py app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'My connection string' db.init_app(app) # لاحظ كيفية إستخدام الجملة with لتمرير app_context with app.app_context(): db.create_all() يمكنك أيضًا أن تقوم بإستخدام التابع push مباشرة (في حالة كنت تستعمل سطر الأوامر)، كالتالي: from flask import Flask from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() def create_app(): app = Flask(__name__) db.init_app(app) return app في سطر الأوامر: >>> from yourapp import create_app >>> app = create_app() >>> app.app_context().push() الطريقة الأخرى هي تمرير app نفسه إلى db.create_all: db.create_all(app=create_app()) 1 اقتباس
السؤال
Mohssen A Mohssen
أحاول أن أقوم بفصل النماذج models في تطبيق فلاسك Flask، لذلك قمت بنقلهم إلى ملفات مختلفة على النحو التالي:
الملف الأول الذي يحتوي على كائن SQLAlchemy:
ثم أقوم بإستدعاء الملف السابق في app.py:
وفي نموذج user.py:
المشكلة الآن أنه عندما أحاول أن أقوم بإنشاء الجداول من خلال db.create_all يظهر لي الخطأ التالي:
No application found. Either work inside a view function or push an application context.
كيف يمكنني إستخدام التابع db.create_all بشكل سليم؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.