• 【flask入门系列】Flask-SQLAlchemy的安装与配置


    📋 个人简介

    • 💖 作者简介:大家好,我是阿牛,全栈领域新星创作者。😜
    • 📝 博主的个人网站:阿牛的博客小屋🔥
    • 🎉 支持我:点赞👍+收藏⭐️+留言📝
    • 📣 系列专栏:flask框架快速入门🍁
    • 💬格言:要成为光,因为有怕黑的人!🔥
      请添加图片描述

    前言

    我们正常使用连接数据库的的驱动往往伴随着写sql的痛苦,而且一整个大项目使用数据库驱动也非常不方便,因此选择合适的一个orm框架很有必要!本文,我将写一下flask的一个扩展flask-sqlalchemy的安装与使用!

    Flask-SQLAlchemy的介绍与数据库驱动的选择

    SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作。flask-sqlalchemy 是一个简化了 SQLAlchemy 操作的flask扩展。
    说到这里,很多人对orm和数据库驱动总是傻傻分不清!下面我画一张图就明白了:

    在这里插入图片描述
    可以看到从始至终都是我们的数据库驱动负责与我们的数据库mysql连接!
    那么使用Flask-SQLAlchemy时我们用哪种数据库驱动呢!

    在python中常用的数据库驱动主要有三种:
    1.MySQLdb
    MySQLdb是 Python 连接 MySQL 最流行的一个驱动,很多框架都也是基于此库进行开发,遗憾的是它只支持 Python2.x,它是基于C开发的库,和Windows 平台的兼容性不友好,现在基本不推荐使用,取代的是它的衍生版本。
    2.mysqlclient
    由于 MySQLdb 年久失修,后来出现了它的 Fork 版本 mysqlclient,完全兼容 MySQLdb,(即支持python2),同时支持 Python3.x,是 Django ORM的依赖工具,如果你想使用原生 SQL 来操作数据库,那么推荐此驱动。
    3.PyMySQL
    PyMySQL是纯 Python 实现的驱动,==速度上比不上 MySQLdb,最大的特点可能就是它的安装方式没那么繁琐。==支持python2和python3!

    很多人包括我自己可能最常用的就是pymysql,但是在我们的flask和django中使用pymysql要做额外操作,拿django来说,默认用MySQLdb,为了兼容python3,我们用MySQLdb的分支,安装mysqlclient,因此不用做额外操作!
    如果要使用pymysql,我们要在项目初始化文件__init__.py中写下面代码:

    import pymysql
    pymysql.install_as_MySQLdb()
    
    • 1
    • 2

    对于flask,这种方式也使用,也有另一种解决方式:

    app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:123456@127.0.0.1:3306/flask'
    
    • 1

    即开头协议不是mysql,而是mysql+pymysql。

    由此可见,pymysql要做额外配置,而mysqldb不适用python3,显而易见,我们选择数据库驱动应该与django一样用mysqlclient,虽然相比pymysql有之不及,但速度比pymysql快!

    而在flask中的flask-mysqldb这个连接数据库的扩展恰好底层是基于mysqlclient的,我们最终用flask-mysqldb

    Flask-SQLAlchemy与flask-mysqldb的安装

    pip install flask-sqlalchemy
    
    • 1

    如果连接的数据库为mysql:

    pip install flask-mysqldb
    
    • 1

    注意:如果直接安装flask-mysqldb失败,请先pip install mysqlclient安装mysqlclient !

    在这里插入图片描述

    在这里插入图片描述

    Flask-SQLAlchemy的配置

    在项目目录下新建settings.py文件,将配置写在里面,采用从配置文件中加载的方式吧!
    对这一块不熟悉的可以去看我之前的博文:
    【flask入门系列】Flask对象初始化参数以及Flask工程配置的加载方式

    settings.py

    #设置连接数据库的url
    SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@127.0.0.1:3306/flaskeatproject'
    
    # 动态追踪修改设置,如未设置只会提示警告,也就是说你在数据库修改的会在models中同步
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    
    • 1
    • 2
    • 3
    • 4
    • 5

    常用的配置就这两个够了!

    app.py

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    
    #从配置文件中settings加载配置
    app.config.from_pyfile('settings.py')
    
    # 实例化模型类对象,将app中的数据库配置加载进去
    db = SQLAlchemy(app)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    先在这里展示一部分用来理解,后面讲解用法时会将其放到专用文件夹models中去!

    可以看下我的项目目录:

    在这里插入图片描述

    其他

    常用的SQLAlchemy字段类型

    在这里插入图片描述

    常用的SQLAlchemy列选项

    在这里插入图片描述

    常用的SQLAlchemy关系选项

    在这里插入图片描述

    结语

    如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。

    🏰系列专栏
    👉软磨 css
    👉硬泡 javascript
    👉前端实用小demo

  • 相关阅读:
    GCD:异步同步?串行并发?一文轻松拿捏!
    SpringBoot+Vue项目实现疫情期间社区出入管理系统
    如何保障需求质量(下):你应该做到的
    Gradle学习(从0到1精通)
    css技巧分享(优惠券缺角样式实现)
    5.tomcat监控
    数据隐私与链上交易如何双赢?首周 Web3 开发者集结精彩回顾
    系统(层次)聚类
    TCP/IP模型五层协议
    【华为OD机试真题 python】 报数游戏【2022 Q4 | 100分】
  • 原文地址:https://blog.csdn.net/qq_57421630/article/details/126038362