写在前面
这篇文章被搁置真的太久了,不知不觉拖到了周三了,当然,也算跟falsk系列说再见的时候,真没什么好神秘的,就是个数据库操作,就大家都知道的CRUD
吧。
Flask SQLAlchemy的使用
1、Flask SQLAlchemy简介
Flask SQLAlchemy
是基于 Flask web
框架和 SQLAlchemy ORM
(对象关系映射)的工具。它旨在为 Flask web
应用程序提供更方便的数据库操作。SQLAlchemy
本身是一个全功能的 ORM
,而 Flask-SQLAlchemy
是在此基础上为 Flask
应用程序提供了一些额外的功能。
2、安装Flask-SQLAlchemy
pip install flask-sqlalchemy
3、举个栗子
后端业务代码如下:
import pymysql
from flask import Flask, request, flash, url_for, redirect, render_template
from flask_sqlalchemy import SQLAlchemy
from flask_case.config import Config
pymysql.install_as_MySQLdb()
# 实例化一个flask对象
app = Flask(__name__)
# 设置一个密钥
app.secret_key = 'a_secret_key'
# 从配置对象中加载配置信息
app.config.from_object(Config)
# 创建SQLAlchemy对象
db = SQLAlchemy(app)
class books(db.Model):
id = db.Column('student_id', db.Integer, primary_key=True)
name = db.Column(db.String(100))
price = db.Column(db.String(50))
def __init__(self, name, price):
self.name = name
self.price = price
@app.route('/')
def show_all():
服务器托管网 return render_template('show_all.html', books=books.query.all())
@app.route('/add', methods=['GET', 'POST'])
def add():
if request.method == 'POST':
if not request.form['name'] or not request.form['price']:
flash('输入项不能为空!', 'error')
else:
book = books(request.form['name'], request.form['price'])
print(book)
db.session.add(book)
db.session.commit()
flash('新书上架成功!')
return redirect(url_for('show_all'))
return render_template('add.html')
if __name__ == '__main__':
with app.app_context():
db.create_all()
app.run(debug=True)
新增书页面add.html
,示例代码如下:
Flask SQLAlchemy Demo
{%- for category, message in get_flashed_messages(with_categories = true) %}
{{ message }}
{%- endfor %}
服务器托管网
书单列表页show_all.html
,示例代码如下:
Flask
SQLAlchemy Demo
{%- for message in get_flashed_messages() %}
{{ message }}
{%- endfor %}
Books (Add Book
)
name
price
{% for book in books %}
{{ book.name }}
{{ book.price }}
{% endfor %}
4、效果
5、知识点
CRUD操作:
- db.session.add (模型对象) – 将记录插入到映射表中
- db.session.delete (模型对象) – 从表中删除记录
-
model.query.all() – 从表中检索所有记录(对应于
SELECT
查询)。
写在最后
在写这部分文章时候,总感觉它跟mybatis
很像,比如可以将数据从数据库映射到对象,支持创建数据库表和定义数据模型,并提供了相应的接口及对应事务的操作,直白点说,不用手撕sql
。
但就性能来看的话,还是MyBatis
好,毕竟是持久层框架,哈哈!
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 开发现代化的.NetCore控制台程序:(4)使用GithubAction自动构建以及发布nuget包
前言 上一篇文章介绍了将 nuget 包发布到 Github Packages 上。 本文更进一步,使用 GitHub Action 搭建 CI/CD 流水线,进行 nuget 的自动构建和发布。 GitHub Action 用起来和之前的 Gitlab CI…