• Python Flask Web开发二:数据库创建和使用


    前言

    数据库在 Web 开发中起着至关重要的作用。它不仅提供了数据的持久化存储和管理功能,还支持数据的关联和连接,保证数据的一致性和安全性。通过合理地设计和使用数据库,开发人员可以构建强大、可靠的 Web 应用程序,满足用户的需求。这里介绍:SQLAlchemy

    一、SQLAlchemy安装

    安装pymysql和SQLAlchemy,打开pycharm,打开终端,分别执行这两个命令

    pip install pymysql
    pip install SQLAlchemy

    看到这样就是表示安装成功了

    然后,执行这个命令检查SQLAlchemy是否正确安装,运行这个命令会输出版本号的。

    python -c "import sqlalchemy; print(sqlalchemy.__version__)"

    二、Flask-Migrate的安装和使用

    Flask-Migrate是一个使用 Alembic 处理 Flask 应用程序的 SQLAlchemy 数据库迁移的扩展。数据库操作可通过 Flask 命令行界面进行。Flask-Migrate 是一个扩展,它以正确的方式配置 Alembic 以与 Flask 和 Flask-SQLAlchemy 应用程序配合使用。就实际的数据库迁移而言,一切都由 Alembic 处理,因此您可以获得完全相同的功能。

    2.1、Flask-Migrate安装

    使用pip安装,在开发工具的命令行里面执行

    pip install Flask-Migrate

    出现这样表示安装成功

    2.2、Flask-Migrate使用

    2.2.1、在__init__.py里面编写

    # __init__.py 文件是一个特殊的文件,它在包的目录中起到了重要的作用
    # 主要作用如下:
    # 声明包:__init__.py 文件的存在将目录标识为一个包。它告诉 Python 解释器该目录是一个包,并且可以在该目录中使用包的相关功能。
    # 初始化模块:__init__.py 文件可以包含初始化代码,当导入包时,这些代码将在包的命名空间中执行。这些初始化代码可以用于设置包的环境、导入子模块或执行其他必要的操作。
    # 控制导入行为:__init__.py 文件可以控制包的导入行为。通过在 __init__.py 文件中定义 __all__ 变量,可以指定导入包时应该导入的模块列表。这样可以控制模块的可见性和公开的接口。
    # 提供包级别的功能:__init__.py 文件可以包含包级别的变量、常量、函数或类,这些可以在包内的其他模块中使用。
    1. from flask import Flask
    2. from flask_migrate import Migrate
    3. from flask_sqlalchemy import SQLAlchemy
    4. from .config import Config
    5. app = Flask(__name__)
    6. app.config.from_object(Config)
    7. db = SQLAlchemy(app)
    8. migrate = Migrate(app, db)

    2.2.2、在config.py里面编写

    1. import os
    2. class Config(object):
    3. BASE_DIR = os.path.abspath(os.path.dirname(__file__))
    4. SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
    5. SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    6. SQLALCHEMY_RECORD_QUERIES = True
    7. SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
    8. 'sqlite:///' + os.path.join(BASE_DIR, 'database.sqlite')
    9. SQLALCHEMY_TRACK_MODIFICATIONS = False
    10. SQLALCHEMY_ECHO = True

    2.2.3、在models.py里面编写

    单个点号(.)表示当前目录或当前模块

    1. from . import db
    2. class User(db.Model):
    3. __tablename__ = "users"
    4. id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    5. username = db.Column(db.String(50), unique=True, nullable=False)
    6. password = db.Column(db.String(255), nullable=False)
    7. email = db.Column(db.String(120), unique=True, nullable=False)
    8. name = db.Column(db.String(50), unique=True, nullable=False)
    9. created_at = db.Column(db.DateTime, nullable=False)

    2.2.4、在app.py里面编写

    1. from datetime import datetime
    2. from flask import Flask, request, jsonify
    3. from .Response.ResMsg import ResMsg
    4. from .models import User
    5. from . import app, db
    6. @app.route("/login", methods=["POST", "GET"])
    7. def login():
    8. # get username and password form json post
    9. username = request.json.get("username")
    10. password = request.json.get("password")
    11. if username == "admin" and password == "123456":
    12. # 假设登录成功后你已经获得了相应的用户名、密码和电子邮件
    13. username = "sandy"
    14. password = "123456"
    15. email = "sady@gmail.com"
    16. # 创建 User 对象并设置字段值
    17. new_user = User(
    18. username=username,
    19. password=password,
    20. email=email,
    21. name="Sandy",
    22. created_at=datetime.now()
    23. )
    24. # 将新用户对象添加到数据库会话中
    25. db.session.add(new_user)
    26. # 提交会话以保存更改到数据库
    27. db.session.commit()
    28. response = {"code": 200,
    29. "msg": "登录成功",
    30. }
    31. return jsonify(response)
    32. else:
    33. response = {"code": 400,
    34. "msg": "登录失败",
    35. }
    36. return jsonify(response)

    2.2.5、db安装,创建迁移存储库,分别执行这两个命令

    flask db init
    flask db migrate -m "Initial migration."

    这样就会在项目里面生成一个在 config.py里面写的database.sqlite数据库.

    再在项目的终端里面执行下面命令,可以将迁移脚本描述的更改应用到您的数据库。

    flask db upgrade

    每次数据库模型更改时,请重复migrateupgrade命令。

    三、创建数据表

    3.1、运行:flask run

    3.2、然后在rest-api.http文件里面编写这些代码,点击三角形运行

    3.3、刷新,查看users表

    ⚠️注意:后面表里面有新增或者删除字段的还执行这两步就可以了

    flask db migrate -m "说明"

    flask db upgrade

    恭喜你,到这里为止,你就成功搭建好数据库和管理功能了,咱们下一集见

  • 相关阅读:
    RPC機制 exactly one 問題
    Matlab/Python教程系列 | 根据目录下的已有图片制作视频(动画)
    猿创征文|超实用的前端开发工具分享
    PhpStudy 2016搭建-DVWA靶场
    【C】顺序表
    35.搜索插入位置
    【论文笔记】—低照度图像增强—Unsupervised—EnlightenGAN—2019-TIP
    产品推荐 | 基于Anlogic系列EG4S20 FPGA开发板
    软件测试|iOS 自动化测试——技术方案、环境配置
    商业智能BI的后端建模和前端建模有什么区别和联系?
  • 原文地址:https://blog.csdn.net/qq_37203361/article/details/132610233