Flask自带的flask_sqlalchemy的运用
from flask import Flask,render_template,redirect
import os
from flask_sqlalchemy import SQLAlchemy
app=Flask(__name__)
#获取此文件夹的绝对路径
baseDir=os.path.abspath(os.path.dirname(__file__))
#在此文件夹的下面创建数据库
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///'+os.path.join(baseDir,'blog.sqlite')
#自动提交
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
#解决一个警告,不加也没事
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
#创建SQLAlchemy对象
db=SQLAlchemy(app)
#文章类
class Article(db.Model):
_tablename_='article'
id=db.Column(db.Integer,primary_key=True)
title=db.Column(db.String(32))
picture=db.Column(db.String(64))#保存图片路径
time=db.Column(db.DATETIME)
description=db.Column(db.TEXT)
#同步数据库
db.create_all()
from flask import request
from datetime import datetime
@app.route('/add_article/',methods=['GET','POST'])
def add_article():
if request.method=='POST':
#获取数据
form_data=request.form#前端传过来的文字数据,在这里接收
file_data=request.files#前端传过来的图片文件,在这里接收
picture=file_data.get('picture')#获取图片对象
#创建数据并存入数据
author=Article(
title=form_data.get('title'),
description = form_data.get('description'),
picture = '/static/img/' + picture.filename,# 图片名称
time = datetime.now()
)
#保存上传图片
#值得一提的是这里可能会报错,到时候换成绝对路径即可
picture.save('static/img/'+picture.filename)
#保存到数据库
session=db.session
session.add(author)
return redirect('/article_list/')
return render_template('add_article.html')