我正在 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/