TypeError:__init __()接受1个位置参数,但给出了5个

nik*_*rav 2 sqlite flask-sqlalchemy python-3.5

    from flask import Flask, request, flash, url_for, redirect, render_template
    from flask_sqlalchemy import SQLAlchemy

    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.sqlite3'
    app.config['SECRET_KEY'] = "random string"

    db = SQLAlchemy(app)

    class students(db.Model):
       id = db.Column('student_id', db.Integer, primary_key = True)
       name = db.Column(db.String(100))
       city = db.Column(db.String(50))
       addr = db.Column(db.String(200))
       pin = db.Column(db.String(10))

    def __init__( self, name, city, addr, pin):
       self.name = name
       self.city = city
       self.addr = addr
       self.pin = pin

    def __str__(self):
       return "{} {} {} {}".format(self.name,self.city,self.addr,self.pin)

    @app.route('/')
    def show_all():
       return render_template('show_all.html', students = students.query.all() )

    @app.route('/new', methods = ['GET', 'POST'])
def new():
   if request.method == 'POST':
      if not request.form['name'] or not request.form['city'] or not request.form['addr']:
         flash('Please enter all the fields', 'error')
      else:
         student = students(request.form['name'], request.form['city'],
            request.form['addr'], request.form['pin'])

         db.session.add(student)
         db.session.commit()
         flash('Record was successfully added')
         return redirect(url_for('show_all'))
   return render_template('new.html')

if __name__ == '__main__':
   db.create_all()
   app.run(debug = True)
Run Code Online (Sandbox Code Playgroud)

**这是使用flask创建数据库的简单代码,但在输入时出现错误。

并且我收到一个builtins.TypeError TypeError错误:__init __()接受1个位置参数,但给出了5个

Blo*_* Ma 5

请修正缩进,或者您确实定义了__init__outside class students

应该像

class students(db.Model):
    # class variables

    # indent for members
    def __init__(self, name, city, addr, pin):
        # some code
Run Code Online (Sandbox Code Playgroud)

否则,不__init__为该类提供任何方法,该类随后具有__init__(self)仅接受1个位置参数的默认构造函数