写在前面

这篇文章被搁置真的太久了,不知不觉拖到了周三了,当然,也算跟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,示例代码如下:

<!DOCTYPE html>
<html>
<body> <h3>Flask SQLAlchemy Demo</h3>
<hr/> {%- for category, message in get_flashed_messages(with_categories = true) %}
<div class = "alert alert-danger">
{{ message }}
</div>
{%- endfor %} <form action = "{{ request.path }}" method = "post">
<label for = "name">name</label><br>
<input type = "text" name = "name" placeholder = "name" /><br>
<label for = "price">price</label><br>
<input type = "text" name = "price" placeholder = "price" /><br>
<input type = "submit" value = "Submit" />
</form> </body>
</html>

书单列表页show_all.html,示例代码如下:

<!DOCTYPE html>
<html lang = "en">
<head></head>
<body> <h3>
<a href = "{{ url_for('show_all') }}">Flask
SQLAlchemy Demo</a>
</h3> <hr/>
{%- for message in get_flashed_messages() %}
{{ message }}
{%- endfor %} <h3>Books (<a href = "{{ url_for('add') }}">Add Book
</a>)</h3> <table>
<thead>
<tr>
<th>name</th>
<th>price</th>
</tr>
</thead> <tbody>
{% for book in books %}
<tr>
<td>{{ book.name }}</td>
<td>{{ book.price }}</td>
</tr>
{% endfor %}
</tbody>
</table> </body>
</html>

4、效果

5、知识点

CRUD操作:

  • db.session.add (模型对象) - 将记录插入到映射表中
  • db.session.delete (模型对象) - 从表中删除记录
  • model.query.all()  - 从表中检索所有记录(对应于SELECT查询)。

写在最后

在写这部分文章时候,总感觉它跟mybatis很像,比如可以将数据从数据库映射到对象,支持创建数据库表和定义数据模型,并提供了相应的接口及对应事务的操作,直白点说,不用手撕sql。

但就性能来看的话,还是MyBatis好,毕竟是持久层框架,哈哈!

大白话说Python+Flask入门(六)Flask SQLAlchemy操作mysql数据库的更多相关文章

  1. 【tips】ORM - SQLAlchemy操作MySQL数据库

    优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...

  2. 13、Flask实战第13天:SQLAlchemy操作MySQL数据库

    安装MySQL 在MySQL官网下载win版MySQL 双击运行 后面根据提示设置密码然后启动即可,这里我设置的密码是:123456 我们可以通过Navicat客户端工具连接上MySQL addres ...

  3. python简说(十七)操作mysql数据库

    import pymysqlconn = pymysql.connect(host='118.24.3.40',user='jxz',password='123456',port=3306,db='j ...

  4. Python工具类(一)—— 操作Mysql数据库

    如何调用直接看__main__函数里如何调用此工具类就阔以啦! # encoding=utf-8 import pymysql # 导入所有Mysql配置常量,请自行指定文件 from conf.se ...

  5. Python学习笔记_02:使用Tkinter连接MySQL数据库实现登陆注册功能

    1 环境搭建 1.1 Python安装 1.2 MySQL环境搭建 1.3安装MySQLdb  2 具体实现 2.1 登陆界面 2.2 注册界面 2.3 具体实现部分代码   1 环境搭建 1.1 P ...

  6. Python爬虫入门六之Cookie的使用

    大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在 ...

  7. python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy

    内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...

  8. python使用sqlalchemy连接mysql数据库

    环境:centos7+python2.7.5+sqlalchemy sqlalchemy是python当中比较出名的orm程序.在python中,使用sqlalchemy连接mysql数据库进行操作非 ...

  9. Python MySQLdb模块连接操作mysql数据库实例_python

    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql ...

  10. Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

    Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...

随机推荐

  1. 【技术实战】Vue功能样式实战【六】

    需求实战一 样式展示 代码展示 <template> <ARow> <ACol style="background-color:#F1F4F5 "&g ...

  2. 【LaTeX】制作 PPT(更新中)

    目录 Beamer 模板 特性 frame 与 slide \pause itemize 中的尖括号 <strat-end> 参考资料 Beamer 模板 PPT 推荐用 Beamer 模 ...

  3. 关于ChatGPT的一些闲扯淡(1)

    这篇写的有点迟了,前者子ChatGPT正火的时候,懒病发作一直拖延.今天对ChatGPT做一个简单的讨论,也是把学习的心得和大家分享一下. 首先什么是GPT,英文全称是Generative Pretr ...

  4. CodeForces 1367F1 Flying Sort (Easy Version)

    题意 给一个长度为\(n\)的数组,数组中的数互不相同,你可以有两种操作 将某一个数放置在数组开头 将某一个数放置在数组结尾 问最小操作多少次可以得到一个递增数列 分析 因为数组中的数很大,我们可以将 ...

  5. iFiles浏览iphone文件

    我们希望能在iphone中浏览文件系统的目录

  6. ionic app调试问题

    以下是一些ionic app在模拟器中的调试问题: 1. CORS问题 官方原文以及解释:Handling CORS issues in Ionic 国内翻译:彻底解决Ionic项目中的跨域问题 2. ...

  7. centos7离线安装docker和docker-compose

    1.找一台可联网的centos7主机 在这台可以联网的机器上把离线包都下载好. 2.下载docker rpm安装包和相关依赖 ## 安装yum-utils包,添加docker yum源 sudo yu ...

  8. dp_ppi转光纤模块连接200PLC组态王通信案例

    DP_PPI转光纤模块连接200PLC组态王光纤通信在冷却塔控制系统案例 现场背景介绍: 西门子200 CPU226PLC通过兴达易控dp转光纤模块在200PLC系统中ppi转光纤实现PCL与组态王2 ...

  9. pyinstall打包相对路径问题

    pyinstall打包相对路径问题 ​ pyinstaller 打包py文件成exe文件,在没有python的机器上运行,执行打包后的程序,经常会出现程序使用的图标无法显示,程序使用的关联文件无法关联 ...

  10. 服务链路追踪 —— SpringCloud Sleuth

    Sleuth 简介 随着业务的发展,系统规模变得越来越大,微服务拆分越来越细,各微服务间的调用关系也越来越复杂.客户端请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果,几平每一个请求 ...