一分钟快速实现Flask框架与SQLAlchemy框架的整合

举报
码农飞哥 发表于 2021/05/29 12:17:48 2021/05/29
【摘要】 您好,我是码农飞哥,感谢您阅读本文!上一篇文章我们介绍了快速上手SQLAlchemy框架,两分钟了解Python之SQLAlchemy框架的使用今天就让我们学习下如何将Flask框架与SQLAlchemy框架进行整合。在Python的Web项目中我们都是使用Flask框架的,快速上手Flask请参考一分钟学会Flask框架的安装与快速使用。 文章目录 项目结构...

您好,我是码农飞哥,感谢您阅读本文!上一篇文章我们介绍了快速上手SQLAlchemy框架,两分钟了解Python之SQLAlchemy框架的使用今天就让我们学习下如何将Flask框架与SQLAlchemy框架进行整合。在Python的Web项目中我们都是使用Flask框架的,快速上手Flask请参考一分钟学会Flask框架的安装与快速使用

项目结构图

下图展示的就是整个项目的项目结构:
在这里插入图片描述

软件环境

软件 版本
Python 3.6.7
Flask 1.0.2
Flask-Cors 3.0.7
Flask-Script 2.0.6
Flask-SQLAlchemy 2.3.2
SQLAlchemy 1.2.17
PyMySQL 0.9.3

依赖下载

我们这里将依赖都放在了requirements.txt文件中进行管理,依赖库如下:

click==7.1.2
Flask==1.0.2
Flask-Cors==3.0.7
Flask-Script==2.0.6
Flask-SQLAlchemy==2.3.2
SQLAlchemy==1.2.17
PyMySQL==0.9.3

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

所以,依赖下载的话只需要执行该文件即可,执行的命令是:

pip install -r requirements.txt

  
 
  • 1

编码

准备工作做好之后,就下来就是写代码环节了。这里创建了两个数据表,一个是用户表,一个是文章表,本系列文章要实现的是创建一个博客系统。

0. 数据表准备

-- 用户表
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(35) NOT NULL COMMENT '用户名',
  `password` varchar(35) NOT NULL COMMENT '密码',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
-- 文章表
CREATE TABLE `post` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `author_id` int(11) NOT NULL COMMENT '作者id',
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `title` varchar(50) NOT NULL COMMENT '标题',
  `body` varchar(2048) NOT NULL COMMENT '正文',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章表';

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

1. 添加数据库配置

创建一个config.py文件,路径是 flaskr/config.py,这里主要添加的是数据库配置,如果后期有其他配置也可以在该文件里面。

# 数据库连接池
SQLALCHEMY_DATABASE_URI = 'mysql://root:123@127.0.0.1:23306/job'
# 自动提交事务
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
# 自动回滚事务
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_POOL_SIZE = 10
SQLALCHEMY_MAX_OVERFLOW = 5
# 开启调试模式
DEBUG = True

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2. 初始化数据库

数据库的基本配置弄好之后,接下来就是初始化数据库,创建应用,文件地址flaskr/__init__.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# 初始化数据库
db = SQLAlchemy()
def create_app(): app = Flask(__name__) # 加载数据库配置 app.config.from_object('config') # 向app中导入并注册db db.init_app(app) return app

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3. 创建数据表对应的model

我们知道SQLAlchemy是一个ORM框架,就是将数据表与对象进行对应的。所以,针对前面的user表和post表,我们分别建立两个model。下面以user表为例,文件地址:flaskr/model/interactive_user.py

from flaskr import db
#定义user表对应的model类InteractiveUser
class InteractiveUser(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) password = db.Column(db.String(80), unique=True) # 序列化 @property def serialize(self): return { 'id': self.id, 'username': self.username, 'password': self.password }
	#定义获取属性的各个方法 def get_id(self): return self.id def get_username(self): return self.username def get_password(self): return self.password

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

4. 进行增删改查

最后一步,就是编写业务代码进行增删改查了。这里只会列举一些基本的查询方法,详细的查询方法,请参考,两分钟了解Python之SQLAlchemy框架的使用,下面所有的方法都是在flaskr/biz/user_service.py文件中。

4.1 新增数据

def insert_user(username, password): try: user = InteractiveUser() user.username = username user.password = password
		#将对象user放入session db.session.add(user)
		#提交数据 db.session.flush() return user except SQLAlchemyError as e: db.session.rollback() raise e

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

4.2 更新数据

# 根据用户ID更新用户密码
def update_model_state(id, password): user = db.session.query(InteractiveUser).filter(InteractiveUser.id == id).first() user.password = password db.session.commit() return user

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.3 查询数据

# 根据用户名查找用户
def query_user_by_username(username, password): print('username={},password={}', username, password) user = db.session.query(InteractiveUser.id).filter(InteractiveUser.username == username, InteractiveUser.password == password).first() return user

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5. 设置启动类

前面的步骤弄好之后,就到了我们的最后一步了,创建一个启动类,用于运行我们的app。文件地址是:/flaskr/manage.py。这里将项目的端口号设置为 5001。

from flaskr import create_app
import pymysql
# 初始化MySQLdb模块
pymysql.install_as_MySQLdb()

app = create_app()

if __name__ == '__main__': app.run(host='0.0.0.0', port=5001)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

启动项目

在这里插入图片描述

总结

本文详细介绍了如何将Flask框架与SQLAlchemy框架进行整合。整体来说还是比较 简单,另外本文中的项目结构比较清晰,适合于在正式的项目中运用。需要注意的是:项目启动之后,我们还不能直接运行增删改查的方法。还需要创建一个视图类。

文章来源: feige.blog.csdn.net,作者:码农飞哥,版权归原作者所有,如需转载,请联系作者。

原文链接:feige.blog.csdn.net/article/details/112509072

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。