我们正常使用连接数据库的的驱动往往伴随着写sql的痛苦,而且一整个大项目使用数据库驱动也非常不方便,因此选择合适的一个orm框架很有必要!本文,我将写一下flask的一个扩展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:123456@127.0.0.1:3306/flask'
即开头协议不是mysql,而是mysql+pymysql。
由此可见,pymysql要做额外配置,而mysqldb不适用python3,显而易见,我们选择数据库驱动应该与django一样用mysqlclient,虽然相比pymysql有之不及,但速度比pymysql快!
而在flask中的flask-mysqldb这个连接数据库的扩展恰好底层是基于mysqlclient的,我们最终用flask-mysqldb!
pip install flask-sqlalchemy
如果连接的数据库为mysql:
pip install flask-mysqldb
注意:如果直接安装flask-mysqldb失败,请先pip install mysqlclient安装mysqlclient !
在项目目录下新建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
常用的配置就这两个够了!
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中去!
可以看下我的项目目录:
如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。
🏰系列专栏
👉软磨 css
👉硬泡 javascript
👉前端实用小demo