On my first flask app this error comes "TypeError: books() takes 0 positional arguments but 11 were given" I have tried a lot but unable to solve this

Question:

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:///database.db"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 
app.config['SECRET_KEY'] = "random string"
db = SQLAlchemy(app)

class books(db.Model):
   bookID = db.Column(db.Integer(), primary_key=True)
   title = db.Column(db.String())
   authors = db.Column(db.String())
   average_rating = db.Column(db.Float())
   isbn = db.Column(db.Integer())
   isbn13 = db.Column(db.Integer())
   language_code = db.Column(db.String(length=10))
   num_pages = db.Column(db.Integer())
   ratings_count = db.Column(db.Integer())
   text_reviews_count = db.Column(db.Integer())
   publication_date = db.Column(db.Date())
   publisher = db.Column(db.String())



@app.route("/")
@staticmethod
def home_page():
    return render_template('home.html')

@app.route("/books")
def books():
   return render_template('books.html')

@app.route("/members")
def members():
    return render_template('members.html')

@app.route('/add', methods = ['GET', 'POST'])
def add():
  if request.method == 'POST':
     if not request.form['title'] or not request.form['authors'] or not 
     request.form['average_rating']or not request.form['isbn']or not request.form['isbn13']or 
     not request.form['language_code']or not request.form['num_pages']or not 
     request.form['ratings_count']or not request.form['text_reviews_count']or not 
     request.form['average_rating']or not request.form['publication_date']or not 
     request.form['publisher']:
        flash('Please enter all the fields', 'error')
    else:
       adds = books(request.form['title'], request.form['authors'],
          request.form['average_rating'], request.form['isbn'],
          request.form['isbn13'],request.form['language_code'],
          request.form['num_pages'],request.form['ratings_count'],
          request.form['text_reviews_count'],request.form['publication_date'],
          request.form['publisher'])
     
       db.session.add(adds)
       db.session.commit()
     
       flash('Record was successfully added')
 return render_template('addbooks.html')

if __name__ == "__main__":
   app.run(debug=1)

this is my app.py file, the database database.db is created without error only issue I am facing is in inserting data in the database
tried a lot of stuff but this error remains the same
What exactly does it signify and what can I do about it?
Thanks in advance

Asked By: Rajveer Mehta

||

Answers:

Try keyword arguments when trying to add a new entry to the database not positional ones:

        adds = books(title=request.form['title'], authors=request.form['authors'],
         average_rating=request.form['average_rating'], isbn=request.form['isbn'],
         isbn13=request.form['isbn13'], language_code=request.form['language_code'],
         num_pages=request.form['num_pages'], ratings_count=request.form['ratings_count'],
         text_reviews_count=request.form['text_reviews_count'], publication_date=request.form['publication_date'],
         publisher=request.form['publisher'])

PS. please double check my code before you paste it into your’s because there are a lot of entries and I might have missed one!

Answered By: Mahmud Alptekin
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.