TypeError: add () отсутствует 1 обязательный позиционный аргумент: 'instance' - PullRequest
0 голосов
/ 19 января 2019

Я изучаю Rest-API с python в Ubuntu.Я хочу использовать SQLAlchemy для хранения моих данных в базе данных SQLite.это мои коды

BookModel.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import json
from settings import app

db=SQLAlchemy(app)

class Book(db.Model):
    __tablename__='books'

что мне делать?

    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(80),nullable=False)
    price = db.Column(db.Float,nullable=False)
    isbn =db.Column(db.Integer)

    def add_book(_name,_price,_isbn):
        new_book=Book(name=_name,price=_price,isbn=_isbn)
        db.Session.add(new_book)
        db.Session.commit()


    def get_all_books(self):
        return Book.query.all()


    def __repr__(self):
        book_object = {'name':self.name,
                       'price':self.price,
                       'isbn':self.isbn}
        return json.dump(book_object)

settings.py

import os
from flask import Flask
app = Flask(__name__)

basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///' + os.path.join(basedir, 'app.db')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

я использую приведенные ниже команды в python для создания базы данных, и это работает.

>>> from BookModel import db
>>> db.create_all()

далее я использую приведенные ниже команды для проверки метода add_book ().

>>> from BookModel import *
>>> Book.add_book("ss",55.6,556)

но PyCharm покажет мне ошибку ниже.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/momo/Projects/flask_rest_aPI /BookModel.py", line 18, in add_book
    db.Session.add(new_book)
TypeError: add() missing 1 required positional argument: 'instance'
...