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启动入口

Python Flask 模型介绍和配置方法

2.apps文件下__init__.py文件初始化app配置

Python Flask 模型介绍和配置方法

3.数据库配置

Python Flask 模型介绍和配置方法

4.创建模型类

Python Flask 模型介绍和配置方法

5.通过命令创建数据库表
flask db init -----》 产生一个文件夹migrations
flask db migrate -----> 自动产生了一个版本文件
flask db upgrade ------> 同步,完成数据库表创建
此刻在pycharm的数据库视图中可以看到创建好的数据库表

Python Flask 模型介绍和配置方法

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的整合

Python Flask 模型介绍和配置方法

来源:https://blog.csdn.net/victory_CEO/article/details/127667238

标签:Python,Flask
0
投稿

猜你喜欢

  • Python HTTP客户端自定义Cookie实现实例

    2023-12-16 01:19:30
  • my sql存储过程学习总结

    2011-07-12 19:12:35
  • Python利用tkinter实现一个简易番茄钟的示例代码

    2021-03-02 17:20:59
  • js中eval()函数和trim()去掉字符串左右空格应用

    2024-04-19 10:00:16
  • python flask 如何修改默认端口号的方法步骤

    2021-07-04 16:35:14
  • Vue组件实现卡片动画倒计时示例详解

    2024-04-29 13:08:00
  • Django的ListView超详细用法(含分页paginate)

    2021-02-13 00:53:41
  • 学会用Python实现滑雪小游戏,再也不用去北海道啦

    2023-07-05 03:25:11
  • JavaScript错误处理

    2023-09-23 08:26:37
  • php 常用算法和时间复杂度

    2023-11-05 10:30:49
  • 在PyCharm中安装PaddlePaddle的方法

    2022-02-24 17:28:18
  • Python文本文件的合并操作方法代码实例

    2022-12-07 21:52:54
  • PHP 字符串 小常识

    2023-11-20 22:08:32
  • Bootstrap表格和栅格分页实例详解

    2024-04-10 13:51:05
  • Python实现注册、登录小程序功能

    2022-12-03 17:50:11
  • CentOS 6.3下安装部署Oracle服务器图文教程

    2024-01-13 12:16:32
  • python+adb+monkey实现Rom稳定性测试详解

    2023-02-06 07:46:00
  • 解决Pyinstaller打包为可执行文件编码错误的问题

    2021-06-30 20:47:46
  • Python正则表达中re模块的使用

    2023-10-11 03:38:22
  • Python获取网络图片和视频的示例代码

    2023-06-24 08:37:58
  • asp之家 网络编程 m.aspxhome.com