我创建了一个带有flask resful的api,设置如下(简化):
app.py
controllers.apiController.py
controllers.otherController.py
models.databaseModels.py
app.py包含以下内容:
from controllers import apiController
app = Flask(__name__)
api = Api(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@db:3306/db'
db.init_app(app)
api.add_resource(apiController.UserRegistration, '/api/<version>/registration')
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', threaded=True)
注册时,会调用上述路由,这会将我们引导到具有此路由资源的apiController。注册是这里的一个例子,但我在这里所做的是在线程中调用otherController中名为addUsers的函数
class UserRegistration(Resource):
def get(self, version):
Thread(name='Test', target=otherController.addUsers, args=(names)).start()
response = jsonify(
message='Started',
status_url='test'
)
response.status_code = 200
return response
此函数根据名称和其他数据创建用户模型对象列表,并希望使用以下行将其批量添加到数据库中:
db.session.bulk_save_objects(users_to_add, return_defaults=True)
db.session.commit()
这个线程之所以有效,是因为我可以打印要添加到其中db的对象列表。然而,我似乎得到以下错误:
RuntimeError: No application found. Either work inside a view function or push an application context.
用户模型如下所示:
new_user = UserModel(
name=name,
created_at=datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S'),
updated_at=datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S'),
role_id=1
)
目前没有回答
相关问题 更多 >
编程相关推荐