Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask-TypeError:uu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;名称';和';用户id';_Python_Mysql_Flask_Flask Sqlalchemy - Fatal编程技术网

Python Flask-TypeError:uu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;名称';和';用户id';

Python Flask-TypeError:uu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;名称';和';用户id';,python,mysql,flask,flask-sqlalchemy,Python,Mysql,Flask,Flask Sqlalchemy,当我使用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' my operat

当我使用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'
my operateDB.py的键代码如下所示:

from flask import Flask
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = 
"mysql+pymysql://root:123@127.0.0.1:3306/env"
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()

问题发生在我运行operateDB.py之后。我找不到问题的解决方案。

当您在Python中创建一个对象时,它会调用
\uuuu init\uuu()
方法,在您的例子中,您在
\uuu init\uuu(self,name,user\id)
方法中有两个参数,因此您应该在创建
Env
对象时提供这两个值,比如
Env=Env('test01','1')

所以不是

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


您需要从模型中删除
\uuuu init\uuu
方法,这不是必需的

请注意,我们如何从未在用户类上定义init方法?这是因为SQLAlchemy向所有模型类添加了一个隐式构造函数,该类接受其所有列和关系的关键字参数。如果出于任何原因决定重写构造函数,请确保继续接受**kwargs并使用这些**kwargs调用超级构造函数以保留此行为:

使用定义的
\uuuu init\uuuu
方法,您会得到一个
TypeError

class User(db.Model):
    def __init__(self,name):
        self.name = name

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), unique=True)
    env = db.relationship('Env', backref='env')


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'))


>>> from app import *
>>> u1 = User()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() missing 1 required positional argument: 'name'
>>> e1 = Env()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() missing 2 required positional arguments: 'name' and 'user_id'
>>> 
类用户(db.Model):
定义初始化(self,name):
self.name=名称
id=db.Column(db.Integer,主键=True)
name=db.Column(db.String(255),unique=True)
env=db.relationship('env',backref='env')
类别环境(数据库模型):
定义初始化(自我、姓名、用户id):
self.name=名称
self.user\u id=用户\u id
id=db.Column(db.Integer,主键=True)
name=db.Column(db.String(255),unique=True)
user\u id=db.Column(db.Integer,db.ForeignKey('user.id'))
>>>从应用程序导入*
>>>u1=用户()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“name”
>>>e1=Env()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:\uuuu init\uuuu()缺少2个必需的位置参数:“name”和“user\u id”
>>> 
定义模型的最佳方法如中所示

类用户(db.Model):
id=db.Column(db.Integer,主键=True)
name=db.Column(db.String(255),unique=True)
env=db.relationship('env',backref='env')
类别环境(数据库模型):
id=db.Column(db.Integer,主键=True)
name=db.Column(db.String(255),unique=True)
user\u id=db.Column(db.Integer,db.ForeignKey('user.id'))
>>>从应用程序导入数据库、用户、环境
>>>u1=用户()
>>>u1.name='用户'
>>>db.session.add(u1)
>>>db.session.commit()
>>>env1=Env()
>>>env1.name='env'
>>>env1.user_id=u1.id)
>>>db.session.add(env1)
>>>db.session.commit()
>>>环境1

您正在尝试创建一个新的
Env()
,但没有按照
def\uuu init\uuuu(self,name,user\u id):
class User(db.Model):
    def __init__(self,name):
        self.name = name

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), unique=True)
    env = db.relationship('Env', backref='env')


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'))


>>> from app import *
>>> u1 = User()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() missing 1 required positional argument: 'name'
>>> e1 = Env()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() missing 2 required positional arguments: 'name' and 'user_id'
>>> 
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255), unique=True)
    env = db.relationship('Env', backref='env')


class Env(db.Model):
    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'))

>>> from app import db, User, Env
>>> u1 = User()
>>> u1.name = 'user'
>>> db.session.add(u1)
>>> db.session.commit()
>>> env1 = Env()
>>> env1.name='env'
>>> env1.user_id=u1.id)
>>> db.session.add(env1)
>>> db.session.commit()
>>> env1
<Env 1>