将相本无种,男儿当自强。这篇文章主要讲述使用app factory flask时,在单独的文件中定义模型相关的知识,希望能为你提供帮助。
我正在创建一个烧瓶应用程序,我正在使用app工厂方法。我在应用程序文件夹__init__.py
中有一个文件,它有create_app
函数,代码如下
def create_app(test_config=None):
app = Flask(__name__,instance_relative_config=True)
app.config.from_mapping(
SECRET_KEY='dev',
)app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:@localhost/database'
db = SQLAlchemy(app)if test_config == None:
app.config.from_pyfile('config.py',silent=True)
else:
app.config.form_mapping(test_config)from flaskr import modelstry:
os.makedirs(app.instance_path)
except OSError:
passclass User(db.Model):
id = db.Column(db.Integer,primary_key=True)
uname = db.Column(db.String(50))@app.route('/hello')
def hello():
return json.dumps({'message':'hello','status':True})
@app.route('/getusers')
def getusers():
u = User.query.get(1)
return json.dumps({'uname':u.uname})return app
【使用app factory flask时,在单独的文件中定义模型】我想要的是在一个单独的文件中定义模型。我怎样才能做到这一点?我尝试在单独的文件中定义并导入它。但问题是模型继承了
db.Model
,然后在导入的文件中不可用。答案将
db
对象的创建保留在create_app
之外,而不传递任何app
实例,并使用SQLAlchemy.init_app
方法进行配置和初始化。你的db
对象,这样你可以从任何文件import
它:db = SQLAlchemy()
#...
def create_app(test_config=None):
app = Flask(__name__,instance_relative_config=True)
#...
db.init_app(app)
有关此主题的更多信息,请访问flask's documentation
推荐阅读
- 如何在app工厂模式中管理额外的模块()
- React Native,Android Studio,JDBC,MySql - 拒绝访问用户'root'@'ipaddress'
- 麻烦.apply()带'int'列的方法
- Android(将片段和弹出窗口的点击事件中生成的变量传递给活动的方法)
- Android Clean Architecture中的登录流程
- 在Android 4.x中显示矢量图形
- android super.onBackPressed()计时
- Android P onStart在onActivityResult之前调用
- 如何在我的活动中设置Android铃声()