Flask 数据库配置

361 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情

之前的博客聊了聊flask的知识点,从flask项目创建到模板渲染都聊过了,那么接下来聊聊Flask数据库操作。

ORM

学习Python之初,很多人都学习过pymysql模块进行数据库操作,但是在flask当中的数据库操作更加方便的是使用ORM。

那么先来了解一下什么是ORM,(数据库关系映射),就是通过面向对象的方法来描述数据库,操作数据库的时候,不直接操作数据本身,而是操作和数据库进行映射的类,然后把类的操作反馈到数据库,再把操作结果返回回来,这样就类似在Python和数据库中间添加了一个翻译,这样的好处和坏处都是显而易见的:

好处:

1、开发者避免直接使用数据库,降低了初学者开发的难度。

2、项目不再关注不同类型数据库导致的sql语句修改问题,这个问题被ORM模块解决了。

坏处:

1、本来直接和数据库进行交互,中间多了一层转接,效率自然会降下来。

2、ORM来对接数据库也导致了,开发者要基于数据库的逻辑学习ORM操作,并且ORM操作并不能灵活的复现sql语句的语法,所以遇到复杂的多表逻辑查询会有不足。

所以,我们总结一下:ORM降低了Flask数据库操作的成本和使用难度,但是对于大数据和复杂的项目查询还是需要谨慎的。

SQLAlchemy

SQLAlchemy是Python当中很受欢迎三方的一个ORM模块,可以支持sqlite3, mysql(mariadb), sql server, postgreSQL, oracle五种数据库,常规的项目使用是足够的。

SQLAlchemy连接数据库是通过uri的格式,这个和pymysql是不同的,我们进行一一列举:

sqlite3

sqlite:///foo.db

mysql

mysql+pymysql://username:password@localhost/数据库

sql server

mssql+pymssql://username:password@localhost/数据库

postgreSQL

postgresql://username:password@localhost/数据库

oracle

oracle://username:password@localhost/数据库

基本的使用流程如下:

engine = create_engine(DB_URI)  # 创建引擎
conn = engine.connect()  # 连接
result = conn.execute('SELECT 1')  # 执行SQL
print(result.fetchone())  
conn.close()  # 关闭连接

这里要注意的是SQLAlchemy调用不同类型的数据库的时候还是需要Python基于这个数据库的底层模块的,比如调用mysql,除了安装SQLAlchemy之外,还需要安装pymysql,其他的也是这样的

Flask-SQLAlchemy配置

flask默认采用SQLAlchemy进行数据库操作,但是也进行了二次封装,在使用的时候更加方便,代码如下:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
​
app.config['SQLALCHEMY_DATABASE_URI'] = 'pymysql://root:mysql@127.0.0.1:3306/test31'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_ECHO'] = True
配置描述
SQLALCHEMY_DATABASE_URI设置数据库连接地址
SQLALCHEMY_TRACK_MODIFICATIONS是否追踪数据库修改(开启后会触发一些钩子函数) 一般不开启, 会影响性能
SQLALCHEMY_ECHO是否显示底层执行的SQL语句,这个感觉相当有用