Python Flask 模型介绍和配置方法
作者:我是肿肿哦~~ 发布时间:2023-07-15 21:00:41
Flask数据模型和连接数据库
flask是基于MTV的结构,其中M指的就是模型,即数据模型,在项目中对应的是数据库。flask与数据库建立联系有很多方法,但一般分为两种,一种是使用pymsql对数据库建立连接;还有一种是ORM映射的方式(基于pymysql),这种方式常用于web开发。以对象的形式与数据库表做映射,方便对象在页面中显示。下面纪录以mysql和orm方式连接数据库。
一、安装
准备工作,安装一下库:
pip3 install pymysql 建公路
pip3 install flask-sqlalchemy 实现ORM映射
pip3 install flask-migrate 发布命令工具
二、配置数据库连接、创建模型类
步骤:
(1) 配置数据库的连接路径
# mysql+pymysql://user:password@hostip:port/databasename
# 数据库+pymysql://用户名:密码@主机ip:端口/数据库名
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root@127.0.0.1:3306/flaskdemo'
(2) flask-sqlalchemy的搭建:在apps包下创建包ext(第三方库的配置通常建个ext文件夹存放),用于存放与数据库有关的代码,在__init__.py中添加:
db = SQLAlchemy() ---->必须跟app联系
在apps/init.py文件(这里我将启动app和app初始化分开了,此处的__init__是app的初始化)下与app建立联系:
def create_app():
....
# 跟app联系
db.init_app(app)
return app
(3) 创建模型:models.py,模型就是类,经常称作模型类
class User(db.Model): ------> user表
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(15), nullable=False)
password = db.Column(db.String(12), nullable=False)
phone = db.Column(db.String(11), unique=True)
rdatetime = db.Column(db.DateTime, default=datetime.now)
常见的数据类型:
Integer 整型
String(size) 字符串类型,务必指定大小
Text 长文本类型
DateTime 日期时间
Float 浮点类型
Boolean 布尔类型
PickleType 存储pickle类型 主要跟序列化有关
LargeBinary 存储大的二进制类型
可选的:
primary_key=True 主键
autoincrement=True 自增
nullable=False 不允许为空
unique=True 唯一
default=datetime.now 默认值 可以设置成当前系统时间或者其他的值
三、使用命令创建数据库表
a. 在app.py 中导入模型:from apps.user.models import User —》让模型与app关联
b. 在终端使用命令:db 建立数据库/更新数据库
flask db init -----》 产生一个文件夹migrations
flask db migrate -----> 自动产生了一个版本文件
flask db upgrade ------> 同步,完成数据库表创建
项目结构
| ---apps
| ---ext
| ---migrations flask db init 只需要init一次
|---versions 版本文件夹
|---71edde7ee937_.py ---》 flask db migrate 迁移
|---cc0dca61130f_.py
flask db upgrade 同步
flask db downgrade 降级
四、以注册为例
1.创建app、migrate(绑定app、数据库),app.run启动入口
2.apps文件下__init__.py文件初始化app配置
3.数据库配置
4.创建模型类
5.通过命令创建数据库表
flask db init -----》 产生一个文件夹migrations
flask db migrate -----> 自动产生了一个版本文件
flask db upgrade ------> 同步,完成数据库表创建
此刻在pycharm的数据库视图中可以看到创建好的数据库表
6.编写注册逻辑(视图)
# 用户注册
@user_bp.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
repassword = request.form.get('repassword')
phone = request.form.get('phone')
email = request.form.get('email')
if password == repassword:
# 注册用户
user = User()
user.username = username
# 自定义加密:new_password = hashlib.sha256(password.encode('utf-8')).hexdigest()
# 使用自带的函数实现加密:generate_password_hash
user.password = generate_password_hash(password)
print(len(user.password))
user.phone = phone
user.email = email
# 添加并提交
db.session.add(user)
db.session.commit()
return redirect(url_for('user.index'))
return render_template('user/register.html')
7.编写模板即html页面即可实现简单的注册功能,实现MTV的整合
来源:https://blog.csdn.net/victory_CEO/article/details/127667238
猜你喜欢
- 本文实例为大家分享了基于神经卷积网络的人脸识别,供大家参考,具体内容如下1.人脸识别整体设计方案客_服交互流程图:2.服务端代码展示sk =
- Python是跨平台的,免费开源的一门计算机编程语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不
- 方法来源于土豆网的导航,在这里纪录一下实现的思路。主要是利用 position 属性的 absolute 和 relative 配
- ASP 内建对象Active Server Pages 提供内建对象,这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用
- 本文先抓取网络上的表情图像,然后利用百度 AI 识别表情包上的说明文字,并利用表情文字重命名文件,这样当发表情包时,不需要逐个打开查找,直接
- 前言采集教务系统成绩单是一个非常有意义的项目。在现代教育中,教务系统已经成为了学校管理和教学工作的重要组成部分。然而,由于各种原因,教务系统
- 1,filesize()函数返回错误的值。 使用curl将某个页面下载到本地时,需要将下载到的临时文件tmpHtml.txt的内容读取到一个
- 本文实例讲解了php表单验证的实现方法,分享给大家供大家参考,具体内容如下1.PHP表单处理welcome.html<html>
- python对函数库的引用方式1、import <库名> 例如:import turtle 如果需要使用库函数中的函数,需要使用
- 下面是一个实战项目的结果。 #coding: utf-8 import Image,ImageDraw,ImageFont,os,strin
- 1.现在有一个需求:我想在monitor应用中导入data文件夹下的apolos.py中的tes()函数并执行。打开monitor应用的视图
- 1. 类的继承与方法的重载上面就是先定义了一个类A,然后由定义了一个类B,B继承了类A,这样B就有了A的非私有属性和方法。class Was
- 如何利用网页弹出各种形式的窗口,我想大家大多都是知道些的,但那种多种多样的弹出式窗口是怎么搞出来的,我们今天就来学习一下:推荐:网页弹出窗口
- 引言我看到很多 golang 社区的开发者,特别是因为它的简单性而被吸引的开发者,对 golang 中的事情应该如何处理做出了一些快速的判断
- 目录安装模块XlsxWriter 示例合并Excel数据表头都一样的 excel表头都不一样的 excel表头都不一样的 excel安装模块
- 本系列专栏写作将采用首创的问答式写作形式,快速让你学习到 OpenCV 的初级、中级、高级知识。6. 在 Python OpenCV 针对图
- php 如何获取请求的xml数据,对方通过http协议post提交过来xml数据,php如何获取到这些数据呢?<?php $xml_d
- 你用过css么?当然,我是指你喜欢做网页的话,用过?很好,那你用过它的特效么?没有?那请跟我来。让我先通俗的介绍一下css,cs
- 项目有时要用一些Ajax的效果,因为比较简单,也就没有去用什么Ajax.net之类的东西,手写代码也就实现了。 第二天,有人反馈错