SQLAlchemy __init__ 错误 - TypeError:SQLAlchemy.__init__() 接受 1 到 2 个位置参数,但给出了 4 个

问题描述 投票:0回答:1

我正在开发一个 Flask 应用程序(我是新手),并尝试将其拆分为逻辑项目结构:

Project Structure

经过一些返工后,我继续遇到以下错误的问题:

TypeError: SQLAlchemy.init() 需要 1 到 2 个位置参数,但给出了 4 个

调试时,光标第二次到达User的类定义时出现错误,如下:

    from ..user_mgr_db import db
    from sqlalchemy import Integer, String, Column, DateTime, Boolean


    class User(db.Model):
        id = db.Column(db.Integer(), primary_key=True)
        username = Column(db.String(80), unique=True, nullable=False)
        email = Column(db.String(120), unique=True, nullable=False)
        password = Column(db.String(80), nullable=False)
        active = Column(db.Boolean(), default=True, nullable=False)
        confirmed_at = Column(db.DateTime())

        def __repr__(self):
            return f'<User {self.username}>'

所以,调试的时候,我把所有的代码行都跑完了,没有问题,然后就出现了错误。在类定义的第二遍中进入代码使我进入了未知的 Flask 代码领域。但我的代码一定有问题。

user_mgr_db
有这个代码:

    from flask_sqlalchemy import SQLAlchemy
    from sqlalchemy.orm import DeclarativeBase


    class UserMgr(DeclarativeBase):
        pass


    db = SQLAlchemy(model_class=UserMgr)
    print(db)

初始化

user_bp
中的蓝图
__init__.py
时出现错误:
jos_user_mgr

随着
import os from flask import Flask, g def create_app(stage_config=None): app = Flask(__name__, instance_relative_config=True) if stage_config is None: app.config.from_object('config.DevConfig') else: app.config.from_object(stage_config) try: os.makedirs(app.instance_path) except OSError: pass from .user_mgr_db import db db.init_app(app) from .views.user_views import user_bp from .api.user_api import user_api_bp app.register_blueprint(user_bp, url_prefix='/user_mgr') app.register_blueprint(user_api_bp, url_prefix='/user_mgr_api') @app.route("/hello") def hello(): result = "<p>We got this far</p>" return result return app

有这个代码:

user_views

有人可以帮我解决这个问题吗?

我尝试了很多不同的场景:

更改了导入语句的位置
  • 将 Integer / String ... 定义更改为 db.Integer,反之亦然
  • 将db定义放在main
  • init
  • 和user_mgr_db文件中,但是后来我遇到了一些其他问题
  • 这是运行应用程序时的完整回溯:

from flask import Blueprint, render_template, request, redirect, url_for from ..models.user import User user_bp = Blueprint('user_bp', __name__, template_folder='templates') @user_bp.route('/') def home(): return render_template('home.html') @user_bp.route('/users') def users(): all_users = User.query.all() return render_template('users.html', users=all_users)


python flask flask-sqlalchemy
1个回答
0
投票

© www.soinside.com 2019 - 2024. All rights reserved.