TypeError: __init__() takes 1 positional argument but 5 were given
TypeError: __init__() takes 1 positional argument but 5 were given
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)
**这是使用 flask 创建数据库的简单代码,但我在输入时遇到错误..
我得到了一个错误
builtins.TypeError
类型错误:__init__() 接受 1 个位置参数,但给出了 5 个
请修复缩进,否则您确实在 class students
之外定义了 __init__
。
应该是
class students(db.Model):
# class variables
# indent for members
def __init__(self, name, city, addr, pin):
# some code
否则,没有为 class 提供 __init__
方法,后者有一个默认的 __init__(self)
构造函数,仅采用 1 个位置参数
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)
**这是使用 flask 创建数据库的简单代码,但我在输入时遇到错误..
我得到了一个错误 builtins.TypeError 类型错误:__init__() 接受 1 个位置参数,但给出了 5 个
请修复缩进,否则您确实在 class students
之外定义了 __init__
。
应该是
class students(db.Model):
# class variables
# indent for members
def __init__(self, name, city, addr, pin):
# some code
否则,没有为 class 提供 __init__
方法,后者有一个默认的 __init__(self)
构造函数,仅采用 1 个位置参数