写在前面

这篇文章被搁置真的太久了,不知不觉拖到了周三了,当然,也算跟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. Web安全漏洞解决方案

    1.已解密的登录请求 推理: AppScan 识别了不是通过 SSL 发送的登录请求. 测试请求和响应: 1.1.1 产生的原因 登录接口,前端传入的密码参数没有经过md5的加密就直接传给了后端 1. ...

  2. SQL Server 2022新功能概览

    开始之前   本篇文章仅仅是针对SQL Server 2022新推出功能的概览,以及我个人作为用户视角对于每个功能的理解,有些功能会结合一些我的经验进行描述,实际上,SQL Server 2022在引 ...

  3. KRPANO资源分析工具下载四方环视全景图

    提示:目前分析工具中的全景图下载功能将被极速全景图下载大师替代,相比分析工具,极速全景图下载大师支持更多的网站(包括各类KRPano全景网站,和百度街景) 详细可以查看如下的链接: 极速全景图下载大师 ...

  4. xmind文件数据解析重构成mindmap可识别数据

    [需求背景] 测试平台开发中,需要引入前端mindmap模块,进行在线xmind实时解析并前端展示 [卡点难点] 选取什么库进行xmind解析 如何转换成mindmap可以识别的数据 [xmind解析 ...

  5. salesforce零基础学习(一百三十一)Validation 一次的bypass设计

    本篇参考: https://admin.salesforce.com/blog/2022/how-i-solved-it-bypass-validation-rules-in-flows 背景:作为系 ...

  6. 「tricks」平凡二分幻术

    其实这个的标题叫 平凡线段树上二分幻术,因为这是一个民科在乱叫. 如标题所言,这个东西确实非常 trivial.碍于网络上没有一个成体系的文章供参考就只能自己来炒炒冷饭. 如果出了什么 bug 就当个 ...

  7. Centos7使用ssh免密登陆同时禁用root密码登陆

    Centos7使用ssh免密登陆同时禁用root密码登陆 首先配置免密登陆,参考:ssh免密登陆 禁用root密码登陆 修改 /etc/ssh/sshd_config 文件 找到: RSAAuthen ...

  8. ORACLE错误代码一览表,方便大家查询!

    ORACLE错误一览表,方便大家查询! ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最 ...

  9. poe不能用了poe.com收费了

    Anthropic's fastest model, with strength in creative tasks. Features a context window of 9k tokens ( ...

  10. Top 5 Code Smells Newbies Developers Could Easily Identify & Avoid

    Posted by Ajitesh Kumar / In Freshers, Software Quality / February 1, 2014 Following is one very pop ...