当前位置: 首页 > 知识库问答 >
问题:

python - flask-sqlalchemy 工程化的问题?

柴俊捷
2023-07-08

官方文档里的例子是直接在 app.py 里初始化数据库的,然后去用 db 但实际项目肯定不会这么做,要放文件夹里然后引入的,但我引入后就报错了

nexpect System Error - The setup method 'shell_context_processor' can no longer be called on the application. It has already handled its first request, any changes will not be applied consistently.\nMake sure all imports, decorators, functions, etc. needed to set up the application are done before running it.
  • a.py
from flask import current_app
from flask_sqlalchemy import SQLAlchemy

DB = SQLAlchemy()
setting = current_app.config["Database"]
current_app.config["SQLALCHEMY_DATABASE_URI"] = f'mysql+pymysql://{setting["DB_USER"]}:{setting["DB_PASS"]}@{setting["DB_HOST"]}/{setting["DB_NAME"]}'

DB.init_app(current_app)
  • b.py
from model.user import User
from a import DB

class Account:


    @staticmethod
    def login(username, password):
        user = DB.session.execute(DB.select(User).filter_by(name=username)).scalar_one()

        return "token"

共有1个答案

崔单弓
2023-07-08

current_app current_request 这些current对象只存在地 FlaskApp的上下文当中, 平时是不存在的. 要用的话, 需要with app.test_context() (可能是这个名字).

在文件中直接使用, 必须使用自己的app对象, 不能用current_app

 类似资料:
  • Python 的这个插件好难懂: 为什么通过框架返回的时候就是:Unexpect System Error - Object of type User is not JSON serializable 有什么好的学习资料么,真的好难懂

  • 问题内容: 我是flask和sqlalchemy的新手,我只是开始在flask应用程序上工作,现在我正在使用sqlalchemy。我想知道使用flask-sqlalchemy与sqlalchemy是否可以获得任何显着的好处。 问题答案: 主要功能是与Flask应用程序正确集成-它创建并配置引擎,连接和会话,并将其配置为与Flask应用程序一起使用。 此设置非常复杂,因为我们需要创建作用域会话并根据

  • 在Flask Web应用程序中使用原始SQL对数据库执行CRUD操作可能很乏味。 相反,Python工具包SQLAlchemy是一个功能强大的OR映射器,为应用程序开发人员提供了SQL的全部功能和灵活性。 Flask-SQLAlchemy是Flask扩展,它将对SQLAlchemy的支持添加到Flask应用程序中。 什么是ORM(对象关系映射)? 大多数编程语言平台是面向对象的。 另一方面,RDB

  • Flask-SQLAlchemy Flask-SQLAlchemy is an extension for Flask that adds support forSQLAlchemy to your application. It aims to simplify using SQLAlchemywith Flask by providing useful defaults and extra h

  • ORM 框架 Web 开发中,一个重要的组成部分便是数据库了。Web 程序中最常用的莫过于关系型数据库了,也称 SQL 数据库。另外,文档数据库(如 mongodb)、键值对数据库(如 redis)近几年也逐渐在 web 开发中流行起来,我们习惯把这两种数据库称为 NoSQL 数据库。 大多数的关系型数据库引擎(比如 MySQL、Postgres 和 SQLite)都有对应的 Python 包。在

  • Flask-SQLAlchemy Tutorial Connect your Flask app to a database using Flask-SQLAlchemy. Tutorial: https://hackersandslackers.com/manage-database-models-with-flask-sqlalchemy/ Demo: https://flasksqlalch