It aims to simplify using SQLAlchemy with Flask by providing useful defaults and extra helpers that make it easier to accomplish common tasks. (官网原文) flask-sqlalchemy 在 sqlalchemy 的基础上,提供了一些常用的工具,并预设了一些默认值,帮助你更轻松地完成常见任务。 flask-sqlalchemy 用起来比直接用 sqlalchemy 方便、省事,不过有些高级一点的功能如果不了解 sqlalchemy 的话会用不好。 所以个人建议最好先直接用 sqlalchemy 工作一小段时间,感受一下 sqlalchemy 到底是怎样运行起来的。等有了一定了解后,如果觉得有必要,再改用 flask-sqlalchemy,提高编程效率。 from flask import Flask, render_template, request, redirect # 1.导入SQLAlchemy from flask_sqlalchemy import SQLAlchemy import os, datetime app = Flask(__name__) # 1.数据库路径 basedir = os.path.abspath(os.path.dirname(__file__)) # 2.实例化数据库连接 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'blog.sqlite') # 3. 每次请求结束后,都会提交数据库的变动 app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True # 4.创建 SQLAlchemy对象 db = SQLAlchemy(app) # 5.文章类 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(32)) # 保存图片的路径 time = db.Column(db.DATETIME) # 时间 description = db.Column(db.TEXT) # 描述 # 6.同步数据库 db.create_all() @app.route('/') def index(): return render_template('index.html') @app.route('/article_list/') def article_list(): # 1.获取数据 article_list = Article.query.all() # 获取所有 print(article_list) # [<Article 1>] print(locals()) # {'article_list': [<Article 1>]} article_list=[...] # 2.传递到前端 return render_template('newslistpic.html', **locals()) # 关键字传参 @app.route('/add_article/', methods=['GET', 'POST']) def add_article(): if request.method == 'POST': # 1.获取表单提交过来的数据 form_data = request.form file_data = request.files title = form_data.get('title') description = form_data.get('description') time = datetime.datetime.now() picture = file_data.get('picture') # 2.保存数据库 article = Article( title=title, description=description, time=time, picture='/static/img/' + picture.filename # 图片名称 例如1.png,2.jpg ) # 3.保存上传图片 picture.save('static/img/' + picture.filename) # 4.保存到数据库 session = db.session session.add(article) return redirect('/article_list/') return render_template('add_article.html') if __name__ == '__main__': app.run()
flask-sqlalchemy数据库模块
最新推荐文章于 2023-07-02 15:24:55 发布