当前位置:网站首页>(零七)Flask有手就行——初识数据库(Flask-SQLAlchemy)
(零七)Flask有手就行——初识数据库(Flask-SQLAlchemy)
2022-07-16 23:59:00 【自由小冰儿】
零、前言
本篇文章,阐述一下Flask中数据库的ORM的使用

安装
直接使用pip install flask-sqlalchemy即可
使用
初始化
使用ORM可以使我们不用写复杂的SQL语句
数据库我们使用Python自带的sqlite3这个不需要安装。
创建exts.py文件,写上如下内容:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
上面代码意思是:创建一个SQLAlchemy对象
创建models.py文件,写上如下内容:
from exts import db
class User(db.Model):
id = db.Column(db.Integer,primary_key=True)
username = db.Column(db.String(80),unique=True)
def __repr__(self):
return '<User %s>' % self.username
上面代码意思是:创建一个用户的模型,方面我们操作
最终创建app.py文件,写上如下内容:
from flask import Flask, jsonify
from exts import db
from models import User
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///foo.db"
db.init_app(app)
上面代码意思是:
将我们的数据库和flask_app进行绑定。
数据库的地址为:当前目录下的foo.db文件
至此,数据库的初始操作已经完成。
聪明的小伙伴就要问了,为什么不将exts.py和app.py进行合并了?
答:如果合并之后,那么models.py会引用SQLAlchemy对象,而app.py又会从models.py中引用User对象,这样会产生一个循环引用的问题。
增删改查
@app.route('/create_table')
def create_table():
db.create_all()
return f"数据库已经创建成功"
@app.route('/create/<name>')
def create(name):
user = User(username=name)
db.session.add(user)
db.session.commit()
return f"用户{
name}已经创建成功"
@app.route('/query/all')
def query_all():
users = User.query.all()
data = {
"all user": str(users)}
return jsonify(data)
@app.route('/query_by/<name>')
def query_by_name(name):
user = User.query.filter_by(username=name).first()
data = {
"user": str(user)}
return jsonify(data)
@app.route('/delete_by/<name>')
def delete_by_name(name):
user = User.query.filter_by(username=name).first()
db.session.delete(user)
db.session.commit()
return "用户:删除成功"
- 首先需要访问
create_table来创建数据库 - 然后可以通过
create/xiaobing创建一个小兵用户 - 通过
query_all查询全部用户 - 通过
delete_by/xiaobing删除小兵用户
扩展文献
边栏推荐
- 数智时代的绩效管理:现实和未来
- How to design interface test cases? (the interface test case template is sent at the end of the document)
- Deep learning - multidimensional data and tensor
- 全国职业院校技能大赛网络安全B模块 编码信息获取
- Flowable工作流(flowable 数据库表结构)
- JVM 内存布局详解,图文并茂,写得太好了!
- Switch and router technology: Integrated Experiment of hot backup routing protocols HSRP, HSRP and spvstp
- 关于 APP 隐私政策文本中个人敏感信息的规范使用声明
- @ConditionalOnMissingBean 如何實現覆蓋第三方組件中的 Bean
- Acquisition of network security B module coding information of national vocational college skills competition
猜你喜欢

通过Dao投票STI的销毁,SeekTiger真正做到由社区驱动

NXP i.mx8m plus enables edge machine learning, enabling iac-imx8mp-kit development board

Strength certification | Haitai Fangyuan is strongly listed in the top 20 fields of "roar 2022 network security industry map"

Mysql—多版本并发控制(MVCC)

Computer Graphics From Scratch - Chapter 3

NIO三板斧之Buffer,提升程序运行效率的双刃剑

如何解决图神经网络过相关?一个IBM的新视角!

从22顶会看对比学习在推荐的应用

Flowable workflow (flowable database table structure)

【著色器實現Wave效果_Shader效果第一篇】
随机推荐
Advanced Mathematics - Chapter 8 differential calculus of multivariate functions - extreme and maximum values of multivariate functions
QT打开外部程序并嵌入Qt界面
2022年3月盗取微软源代码的 APT组织 lapsus$完整资料汇总
Tiktok Zhua Bao Tong Sha version -version21.5
双指针汇总(未完待续)
深度学习-多维数据和tensor
插入排序总结
Greenplum common
Strength certification | Haitai Fangyuan is strongly listed in the top 20 fields of "roar 2022 network security industry map"
数智时代的绩效管理:现实和未来
Leetcode 242: valid Letter ectopic words
@ConditionalOnMissingBean 如何實現覆蓋第三方組件中的 Bean
Why processing data indicators
“husky install“ command already exists in prepare script, skipping./Users/982471938qq.com/Desktop
MySQL lock: comprehensive understanding
Prometheus+grafana visual real-time JVM monitoring tool
@How can conditionalonmissingbean cover beans in third-party components
为什么加工数据指标
QT opens external program and embeds QT interface
交换机与路由器技术:链路聚合、生成树协议STP和生成树协议配置