当前位置: 首页 > news >正文

学做网站论坛vip视频微盟集团官网

学做网站论坛vip视频,微盟集团官网,做网站linux和win,建网站开发语言对比想要用flask_sqlalchemy结合Blueprint分模块写一下SQL的增删改查接口#xff0c;结果发现有循环引入问题。 一开始#xff0c;我在app.py中使用db SQLAlchemy(app)创建数据库对象#xff1b;并且使用app.register_blueprint(db_bp, url_prefix/db)注册蓝图。 这使得我的依…想要用flask_sqlalchemy结合Blueprint分模块写一下SQL的增删改查接口结果发现有循环引入问题。 一开始我在app.py中使用db SQLAlchemy(app)创建数据库对象并且使用app.register_blueprint(db_bp, url_prefix/db)注册蓝图。 这使得我的依赖关系是这样的。db.py → app,py 中的db对象app.py → db,py 用于注册蓝图产生了循环引用。 接着我学着使用一个model.py来存放db变量但是使用错误下面是错误的示例。 我在model.py使用db SQLAlchemy()创建了未注册的db对象 在app.py中使用db.init_app(app)来连接数据库注册db对象 但在db.py中错误引用了app.py中的db对象再次产生了循环引用 解决方法在db.py中引入model.py中的db对象即可。 此时的依赖关系如下db.py和app.py → model.py 用于获取db对象app.py → db.py 用于注册蓝图。 看到一些比较麻烦的解决方案1. 把db变量变成一个web接口用请求的方式获取。 2. 把app注册db和blueprint的操作都放入main函数中。或者先封装到def create_app()函数中然后在main函数中调用。 参考 使用Flask-SQLAlchemy和Blueprints循环导入db引用 | 那些遇到过的问题 dao.py from flask import Blueprint, request, jsonify from models import db from models import KnowledgeEntity from sqlalchemy.exc import SQLAlchemyError# 创建视图函数蓝图 app Blueprint(KnowledgeDAO, __name__) word db.Column(db.String(255), primary_keyTrue) content db.Column(db.Text, uniqueTrue, nullableFalse) priority db.Column(db.String(255), uniqueTrue, nullableFalse) association db.Column(db.JSON, uniqueTrue, nullableFalse) # 创建用户 app.route(/add, methods[POST]) def create_user():data request.get_json()word data.get(word)content data.get(content)priority data.get(priority)association data.get(association)if not word or not priority:return jsonify({message: Both word and priority are required}), 400entity KnowledgeEntity(wordword, contentcontent, prioritypriority, associationassociation)try:db.session.add(entity)db.session.commit()return jsonify(1), 201except SQLAlchemyError as e:db.session.rollback() # 回滚事务以撤销之前的操作error_message str(e)return fError: {error_message}, 500# 查询所有用户 app.route(/selectAll, methods[POST]) def get_users():users KnowledgeEntity.query.all()print(users,users)# user_list [{id: user.id, username: user.username, email: user.email} for user in users]return jsonify(1) model.py from flask_sqlalchemy import SQLAlchemydb SQLAlchemy()class KnowledgeEntity(db.Model):__tablename__ knowledgeword db.Column(db.String(255), primary_keyTrue)content db.Column(db.Text, uniqueTrue, nullableFalse)priority db.Column(db.String(255), uniqueTrue, nullableFalse)association db.Column(db.JSON, uniqueTrue, nullableFalse)def __init__(self, word, contentNone, priorityNone, associationNone):self.word wordself.content contentself.priority priorityself.association association app.py改进后的 from flask import Flask, request, jsonify,g from flask_cors import CORS from flask_sqlalchemy import SQLAlchemy from models import db # 导入视图函数 from DAO import KnowledgeDAOapp Flask(__name__) # 配置选项用于控制 Flask 在将 Python 字典转换为 JSON 数据时是否按照键的字母顺序对键进行排序默认情况下它的值为 True表示会对键进行排序。 app.config[JSON_SORT_KEYS] False app.config[SQLALCHEMY_DATABASE_URI] mysqlpymysql://root:123456127.0.0.1:3306/ennote app.config[SQLALCHEMY_TRACK_MODIFICATIONS] False# 注册跨域 CORS(app, resourcesr/*) # 注册CORS, /* 允许访问所有api# 连接数据库 db.init_app(app)# 注册蓝图 app.register_blueprint(KnowledgeDAO.app, url_prefix/knowledge)if __name__ __main__:# 创建应用上下文with app.app_context():# 在这里执行需要应用上下文的操作# 例如访问数据库或使用Flask的全局变量db.create_all()app.run(host127.0.0.1, port5000, debugTrue)
http://www.sadfv.cn/news/347851/

相关文章:

  • 网站建设 h5 小程序苏州网站开发建设方法
  • 网络营销网站的功能云主机网站
  • 音乐网站的建设网站开发 文件上传慢
  • wordpress重复网站建个人网站有什么好处
  • 网站智能建设系统源码淄博网站建设企业
  • 吴兴网站建设广西壮族自治区教育厅
  • 网站制作公司服务wordpress部署到外网
  • 云网站 制作网易企业邮箱服务
  • 南充网站网站建设凉州区住房和城乡建设局网站
  • 卧龙区2015网站建设价格有什么网站可以做投票功能吗
  • 网站建设主要用什么软件以下哪些不属于h5制作软件
  • 建设网站哪个公司好中国3大做外贸的网站
  • 24小时网站开发 pdf接外贸单的平台
  • 网站+建设+拖拉+源码+系统弹幕网站怎么做
  • 2016年做水果行业专业网站公司logo设计用什么软件
  • 软件开发网站建设开发个网站开票名称是什么意思
  • 网站建设餐饮网站开发的作用
  • 海口网站建设网站制作太原网站建设列表网
  • 网站建设设计团队网站建设 企炬
  • 海南行指网站开发公司wordpress文章阅读数
  • 网站建设与管理收获池州网站建设
  • 手机网站开发下崽做搬家网站的素材
  • 做料理网站关键词怎么设置留手机号广告
  • 个人营销网站linux系统运行wordpress
  • 建设茶叶网站目的sqlite做网站
  • 安徽建设工程信息网站成都产品包装设计
  • 神农架网站设计做门窗投标网站
  • 找人做网站昆明制作网线的基本步骤
  • 网站建设开票是几个点开封网站设计
  • 杭州建设网站的公司搭建网上购物商城的步骤