前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask-SQLALchemy 连接数据库

Flask-SQLALchemy 连接数据库

作者头像
Python碎片公众号
发布2021-02-26 15:34:04
2.8K0
发布2021-02-26 15:34:04
举报
文章被收录于专栏:Python碎片公众号的专栏

在 Flask Web 框架中,Flask-SQLALchemy 扩展对数据库操作进行了封装,使用 Flask-SQLALchemy ,可以通过 Python 对象来操作数据库。

一、Flask-SQLALchemy 简介

Flask-SQLALchemy 是一个给你的应用添加 SQLALchemy 支持的 Flask 扩展。它需要 SQLAlchemy 0.6 或更高的版本。它致力于简化在 Flask 中 SQLAlchemy 的 使用,提供了有用的默认值和额外的助手来更简单地完成日常任务。

上面这句话引自 Flask-SQLALchemy 的中文文档: http://docs.jinkan.org/docs/flask-sqlalchemy/ 。

SQLALchemy 对数据库进行了抽象,通过 Python 对象来操作数据库,开发者不用直接和 SQL 语句打交道。这会让我们想起 ORM(Object-Relational Mapping,对象关系映射),Flask-SQLALchemy 就是一个满足 ORM 的 Flask 框架。

关于 ORM 可以参考: Web框架中的ORM框架

SQLAlchemy 是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库操作,也就是说,SQLAlchemy 是满足 ORM 的框架。而 Flask-SQLALchemy 是一个简化了 SQLAlchemy 操作的 Flask 扩展。

Flask-SQLALchemy 实现了关系数据库和 Python 对象的映射,舍弃了一些性能开销,换取了较大的开发效率提升和开发人员的便利。

二、Flask-SQLALchemy 安装

使用命令 pip install flask-sqlalchemy 安装 Flask-SQLALchemy,如果用的是 pip3 ,就使用 pip3 install flask-sqlalchemy。

代码语言:javascript
复制
pip install flask-sqlalchemy
pip3 install flask-sqlalchemy

一般来说在 Linux 上安装都会很顺利,在 Windows 上安装可能会有防火墙的原因,下包时会连接超时,可以先将包下载到本地再进行安装。

代码语言:javascript
复制
python setup.py install flask-sqlalchemy

也可以指定国内的镜像源来安装,如清华的源 https://pypi.tuna.tsinghua.edu.cn/simple ,阿里的源http://mirrors.aliyun.com/pypi/simple/ 。

代码语言:javascript
复制
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask-sqlalchemy

当提示下图的结果时,安装成功。

如果使用 mysql 数据库,还需要安装 mysqldb 驱动。

代码语言:javascript
复制
pip install flask-mysqldb

在 Linux 中,如果是缺少 gcc 等原因,可以安装对应的工具来解决。如:

代码语言:javascript
复制
yum install -y gcc
yum install -y libffi-devel python-devel openssl-devel

如果已经安装了 python-devel 还找不到 Python.h ,可能是同时安装了不同版本的 Python,可以到 /usr/include/ 下不同 Python 版本的文件夹中看 Python.h 在哪个目录下,如果在 Python2 中,就用 pip2 安装,如果在 Python3 中,就用 pip3 安装,只是 pip2 是安装到 Python2 中,pip3 是安装到 Python3 中,看是否满足自己的目的。

在 Windows 中通过指定国内镜像源来进行安装。

代码语言:javascript
复制
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask-mysqldb

每个人的环境不同,安装过程中的问题也各不相同,需要灵活解决,自己搜索找一些方法。

当提示下图的结果时,安装成功。

三、Flask-SQLALchemy 连接数据库

1. 先创建一个数据库

这里使用我之前创建的 admin 用户连接数据库。

代码语言:javascript
复制
mysql -u admin -p

回车后输入密码连接数据库,创建一个数据库来使用,我这里也是使用之前创建过的数据库 MyDB_one ,如果没有就创建。

代码语言:javascript
复制
create database MyDB_one charset utf8;

2. 在 Flask 代码中连接数据库

在 Flask-SQLAlchemy 中,与数据库的连接方式是在 Flask 对象的配置中加入 SQLALCHEMY_DATABASE_URI 配置项,配置项的值是一个 URL 的形式,‘mysql://user:password@ip:port/database’ ,分别是使用的数据库,登录用户,密码,ip地址,端口,数据库名。如:

代码语言:javascript
复制
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://admin:Mysql!123@127.0.0.1:3306/MyDB_one'

这样配置之后,Flask 就会连接到对应的数据库。

3. 数据库连接设置

设置 SQLALCHEMY_TRACK_MODIFICATIONS 为 True 动态追踪修改设置,如未设置会提示警告。

代码语言:javascript
复制
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

设置 SQLALCHEMY_ECHO 为 True ,查询时会显示原始SQL语句。

代码语言:javascript
复制
app.config['SQLALCHEMY_ECHO'] = True

除了这两个常用的配置,还可以根据需要设置其他的数据库连接设置,可以自己查询一下,这里就不扩展了。

4. 创建 SQLAlchemy 对象

将 Flask app 对象传递给 Flask-SQLAlchemy 中导入的 SQLAlchemy 类,创建一个 SQLAlchemy 对象 db ,这个对象名是自定义的,叫 db 是为了方便理解。

在后面的代码中,使用 db 来创建数据表和创建表的字段。

5. 定义数据模型类

自定义一个数据对象的类,这个类的名字一般和数据库中的表名同名。

这个数据库必须继承 db 对象的 Model 类。

在类中通过 __tablename__ 来指定表名,通过 db 对象的 Column 方法来定义数据库的字段,通过 db 对象中的字段类型来定义数据库的字段类型。

6. 执行数据表创建

定义完成数据模型类后,执行 db 对象的 create_all() 方法,运行 Flask 后端程序后,就会在连接的数据库中创建一张表。

四、Flask-SQLALchemy 使用

在项目目录下创建一个 flask_alchemy.py 文件,注意,文件名不能叫 flask_sqlalchemy.py ,那样会与 Flask-SQLAlchemy 库中的文件名相同,会造成导包错误。

创建完成后,在 flask_alchemy.py 中编写代码。

代码语言:javascript
复制
from flask import Flask
from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)


app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://admin:Mysql!123@127.0.0.1:3306/MyDB_one'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)


class Computer(db.Model):
    __tablename__ = 'Computer_table'
    cid = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    price = db.Column(db.Integer)


db.create_all()


if __name__ == '__main__':
    app.run(debug=True)

运行代码后,会在数据库 MyDB_one 中创建一张叫 Computer_table 的数据表,表中有三个字段 cid , name , price 。

这说明我们成功通过 Flask-SQLAlchemy 实现了在 Flask 项目中操作数据库,实现了 ORM 操作。后面要对数据表进行增删改查,都可以通过定义的模型类 Computer 的对象来进行。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python 碎片 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档