一个简易demo
目录如下:
app.py
# app.py
from flask import Flask, request
from flask.views import MethodView
from extension import db,cors
from models import Book
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///books.sqlite' # 使用SQLite数据库,也可使用其他数据库
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False #禁止追踪
db.init_app(app)
cors.init_app(app)
@app.route('/')
def hello_world():
return 'hello world'
@app.cli.command() # 自定义命令 create / flask create
def create():
db.drop_all() # 旧的数据表删除
db.create_all() # 创建新的数据表
Book.init_db() # 初始化数据
class BookApi(MethodView):
def get(self, book_id):
if not book_id:
books: [Book] = Book.query.all()
results = [
{
'id': book.id,
'book_name': book.book_name,
'book_type': book.book_type,
'book_prize': book.book_prize,
'book_number': book.book_number,
'book_publisher': book.book_publisher,
'author': book.author
} for book in books
]
return {
'status': 'success',
'message': '数据查询成功',
'results': results
}
book: [Book] = Book.query.get(book_id)
return {
'status': 'success',
'message': '数据查询成功',
'results': {
'id': book.id,
'book_name': book.book_name,
'book_type': book.book_type,
'book_prize': book.book_prize,
'book_number': book.book_number,
'book_publisher': book.book_publisher,
'author': book.author
}
}
def post(self):
form = request.json
book = Book()
book.book_number = form.get('book_number')
book.book_name = form.get('book_name')
book.book_type = form.get('book_type')
book.book_prize = form.get('book_prize')
book.author = form.get('author')
book.book_publisher = form.get('book_publisher')
db.session.add(book)
db.session.commit()
return {
'status': 'success',
'message': '数据添加成功'
}
def delete(self, book_id):
book = Book.query.get(book_id)
db.session.delete(book)
db.session.commit()
return {
'status': 'success',
'message': '数据删除成功'
}
def put(self, book_id):
book: Book = Book.query.get(book_id)
book.book_number = request.json.get('book_number')
book.book_name = request.json.get('book_name')
book.book_type = request.json.get('book_type')
book.book_prize = request.json.get('book_prize')
book.author = request.json.get('author')
book.book_publisher = request.json.get('book_publisher')
db.session.commit()
return {
'status': 'success',
'message': '数据修改成功'
}
book_view = BookApi.as_view('book_api')
app.add_url_rule('/books/',defaults={'book_id': None},
view_func=book_view, methods=['GET', ])
app.add_url_rule('/books/',view_func=book_view, methods=['POST', ])
app.add_url_rule("/books/<int:book_id>",
view_func=book_view, methods=['GET', 'PUT', 'DELETE'])
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
extension.py
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS # 跨域请求伪造
db = SQLAlchemy()
cors = CORS()
models.py
from extension import db
class Book(db.Model):
__tablename = 'book'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
book_number = db.Column(db.String(255), nullable=False)
book_name = db.Column(db.String(255), nullable=False)
book_type = db.Column(db.String(255), nullable=False)
book_prize = db.Column(db.Float, nullable=False)
author = db.Column(db.String(255))
book_publisher = db.Column(db.String(255))
@staticmethod
def init_db():
rets = [
(1, '001', '活着', '小说', 39.9, '余华', '某某出版社'),
(2, '002', '三体', '科幻', 99.8, '刘慈欣', '重庆出版社')
]
for ret in rets:
book = Book()
book.id = ret[0]
book.book_number = ret[1]
book.book_name = ret[2]
book.book_type = ret[3]
book.book_prize = ret[4]
book.author = ret[5]
book.book_publisher = ret[6]
db.session.add(book)
db.session.commit()
标签:name,get,flask,app,分离,db,book,后端,id
From: https://www.cnblogs.com/code3/p/17773925.html