当前位置:网站首页>【flask入门系列】Flask-SQLAlchemy的安装与配置
【flask入门系列】Flask-SQLAlchemy的安装与配置
2022-07-29 05:28:00 【馆主阿牛】
个人简介
- 作者简介:大家好,我是阿牛,全栈领域新星创作者。
- 博主的个人网站:阿牛的博客小屋
- 支持我:点赞+收藏️+留言
- 系列专栏: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()
对于flask,这种方式也使用,也有另一种解决方式:
app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:[email protected]:3306/flask'
即开头协议不是mysql,而是mysql+pymysql。
由此可见,pymysql要做额外配置,而mysqldb不适用python3,显而易见,我们选择数据库驱动应该与django一样用mysqlclient,虽然相比pymysql有之不及,但速度比pymysql快!
而在flask中的flask-mysqldb这个连接数据库的扩展恰好底层是基于mysqlclient的,我们最终用flask-mysqldb!
Flask-SQLAlchemy与flask-mysqldb的安装
pip install flask-sqlalchemy
如果连接的数据库为mysql:
pip install flask-mysqldb
注意:如果直接安装flask-mysqldb失败,请先pip install mysqlclient安装mysqlclient !


Flask-SQLAlchemy的配置
在项目目录下新建settings.py文件,将配置写在里面,采用从配置文件中加载的方式吧!
对这一块不熟悉的可以去看我之前的博文:
【flask入门系列】Flask对象初始化参数以及Flask工程配置的加载方式
settings.py
#设置连接数据库的url
SQLALCHEMY_DATABASE_URI = 'mysql://root:[email protected]:3306/flaskeatproject'
# 动态追踪修改设置,如未设置只会提示警告,也就是说你在数据库修改的会在models中同步
SQLALCHEMY_TRACK_MODIFICATIONS = True
常用的配置就这两个够了!
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)
先在这里展示一部分用来理解,后面讲解用法时会将其放到专用文件夹models中去!
可以看下我的项目目录:

其他
常用的SQLAlchemy字段类型

常用的SQLAlchemy列选项

常用的SQLAlchemy关系选项

结语
如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。
边栏推荐
- 王树尧老师运筹学课程笔记 01 导学与绪论
- 最新PyCharm2018破解教程
- 数据单位:位、字节、字、字长
- CNAME记录和A记录的区别
- Hongke shares | why EtherCAT is the best solution to improve the performance of the control system?
- Hongke automation SoftPLC | Hongke kPa modk operation environment and construction steps (3) -- modk routine test
- Hongke | uses jesd204 serial interface to bridge analog and digital worlds at high speed
- Ansible(自动化软件)
- 非常实用的 Shell 和 shellcheck
- 5g service interface and reference point
猜你喜欢

Ping principle

联邦学习后门攻击总结(2019-2022)

【冷冻电镜入门】加州理工公开课课程笔记 Part 3: Image Formation

实战!聊聊如何解决MySQL深分页问题

阿里一面,给了几条SQL,问需要执行几次树搜索操作?

Hongke share | bring you a comprehensive understanding of "can bus error" (I) -- can bus error and error frame

How to use SFTP command to access SFTP server on the development board

After the EtherCAT master station is disconnected, how to ensure that the target system is not affected by the fault?

Hongke automation SoftPLC | Hongke kPa modk operation environment and construction steps (3) -- modk routine test

JMM memory model concept
随机推荐
Biased lock, lightweight lock test tool class level related commands
ss命令详解
find命令详解(文章最后运维最常用操作)
Let the computer run only one program setting
5G服务化接口和参考点
数据单位:位、字节、字、字长
JMM memory model concept
分享一些你代码更好的小建议,流畅编码提搞效率
Using STP spanning tree protocol to solve the problem of two-layer loop in network
损失函数——交叉熵损失函数
How to use SFTP command to access SFTP server on the development board
MQTT服务器搭建以及使用MQTT.fx测试
Hongke solution | a unique solution to realize seamless integration at low cost in Digital Substations
【冷冻电镜入门】加州理工公开课课程笔记 Part 3: Image Formation
Apisik health check test
【冷冻电镜】RELION4.0 pipeline命令总结(自用)
Hongke | uses jesd204 serial interface to bridge analog and digital worlds at high speed
API for using the new date class of instant
MySql基础知识(高频面试题)
比较单片机3种时钟电路方案