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)