首页 > 解决方案 > Flask - TypeError: __init__() 缺少 2 个必需的位置参数:'name' 和 'user_id'

问题描述

当我使用Python插入数据时,我遇到了以下问题:

Traceback (most recent call last):
  File "D:/Documents/python/dbFlask/web/models.py", line 42, in <module>
    env = Env()
TypeError: __init__() missing 2 required positional arguments: 'name' and 'user_id'

我的init .py 是这样的:

from flask import Flask
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = 
"mysql+pymysql://root:123@127.0.0.1:3306/env"

我的operatedDB.py的关键代码是这样的:

class Env(db.Model):

    def __init__(self, name, user_id):
        self.name = name
        self.user_id = user_id

id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), unique=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
env = Env()
env.name = 'test01'
env.user_id = '1'
db.session.add(env)
db.session.commit()

在我运行operatedDB.py 之后出现了问题。我找不到问题的解决方案。

标签: pythonmysqlflaskflask-sqlalchemy

解决方案


当您在 Python 中创建一个对象时,它会调用__init__()方法,在您的情况下,您在__init__(self, name, user_id)方法中有 2 个参数,因此您应该在创建Env类似的对象时提供这两个值env = Env('test01', '1')

所以而不是

env = Env()
env.name = 'test01'
env.user_id = '1'

利用

env = Env('test01', '1')

推荐阅读