python-3.x - 类型错误 : add() missing 1 required positional argument: 'instance'

标签 python-3.x sqlite pycharm flask-sqlalchemy

我正在 ubuntu 中使用 python 学习 Rest-API。我想使用 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)

设置.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 bellow 命令来创建数据库并且它可以工作。
>>> 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'

最佳答案

db.session必须小写。
尝试

db.session.add(new_book)
db.session.commit()

关于python-3.x - 类型错误 : add() missing 1 required positional argument: 'instance' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54261956/

相关文章:

python - 如何更新 SQL 数据库中的值? SQLite/ python

python - 无法打开数据库文件 Django/sqlite3

python - 在 Python 中,赋值运算符在类方法定义中作为默认值传递时是否访问类或实例变量?

python-3.x - 为什么 pyforms 无法从 pysettings 导入conf

Python 3 - 如何正确设置这个多处理作业?

android - 将一个表中的值插入到多个条目中

python - 使用 Pandas 将字符串旋转到更多列

pycharm - 在 PyCharm 中重命名 (shift-F6) 后,如何使用热键访问 "Do Refactor"按钮?

python - 打包 stub 文件

pycharm - 从同级子包导入时未解析的引用