/ / आवेदन कारखाने के साथ फ्लास्क-माइग्रेट पर त्रुटि - अजगर, फ्लास्क, फैक्टरी-पैटर्न, फ्लास्क-माइग्रेट, फ्लास्क-क्ली

फ्लास्क पर त्रुटि - आवेदन कारखाने के साथ माइग्रेट - पायथन, फ्लास्क, फैक्ट्री-पैटर्न, फ्लास्क-माइग्रेट, फ्लास्क-क्ली

run.py

db = SQLAlchemy()
migrate = Migrate()

def create_app():
app = Flask(__name__)
db.app = app
db.init_app(app)
migrate.init_app(app, db)
return app

if __name__ == "__main__":
application = create_app()
application.run()

manage.py

from flask_migrate import MigrateCommand, Manager

from run import create_app


manager = Manager(create_app())
manager.add_command("db", MigrateCommand)

जब मैं चलता हूं: अजगर प्रबंधन ओबीडीबी इनबिट

Traceback (most recent call last):
File "manage.py", line 6, in <module>
manager = Manager(create_app())
TypeError: "NoneType" object is not callable

जब मैं दौड़ता हूं: फ्लास्क डीबी इनिट

Usage: flask db init [OPTIONS]

Error: Could not locate Flask application. You did not provide the FLASK_APP environment variable.

For more information see http://flask.pocoo.org/docs/latest/quickstart/

मैं FLASK_APP को रन, run.py, run.create_app, run: create_app () के रूप में निर्यात करने का प्रयास करता हूं, फिर भी मुझे ऊपर दिखाई गई त्रुटि मिलती है। इस त्रुटि के कारण क्या है?

उत्तर:

उत्तर № 1 के लिए 1

फ्लास्क-माइग्रेट को चलाने के दो तरीके हैंआदेश देता है। नई विधि फ्लास्क सीएलआई का उपयोग करती है, पुरानी फ्लास्क-स्क्रिप्ट का उपयोग करती है। चूँकि आप फ्लॅक-स्क्रिप्ट स्थापित नहीं करते हैं, मुझे लगता है कि आप फ्लास्क CLI का उपयोग करना चाहते हैं

इसलिए आपको दूर फेंकने की जरूरत है manage.py चूंकि यह केवल फ्लास्क-स्क्रिप्ट पर लागू होता है। फिर अपने कदम application वैश्विक दायरे में परिवर्तनशील:

db = SQLAlchemy()
migrate = Migrate()

def create_app():
app = Flask(__name__)
db.app = app
db.init_app(app)
migrate.init_app(app, db)
return app

application = create_app()

if __name__ == "__main__":
application.run()

फिर अपना सेट करें FLASK_APP चर:

$ export FLASK_APP=run.py

और अब आपको एप्लिकेशन को चलाने में सक्षम होना चाहिए flask run, और डेटाबेस के साथ कमांड करता है flask db <command>.


उत्तर № 2 के लिए 1

flask_migrate से प्रबंधक का उपयोग करने का प्रयास करेंगे flask-script, लेकिन केवल यदि flask-script स्थापित किया गया है ।

बस, और यह काम करना चाहिए। आप सीधे आयात भी कर सकते हैं flask_script.

pip install flask_script

manage.py

from flask_migrate import MigrateCommand
from flask_script import Manager
from run import create_app

app = create_app()
manager = Manager(app)
manager.add_command("db", MigrateCommand)