Flask使用Flask-SQLAlchemy操作MySQL数据库(一)——Flask-SQLAlchemy配置与数据库连接

一、准备工作

1、Flask环境配置

参考《Flask环境搭建及基础项目构建》

 

2、数据库

我这里使用的是XAMPP集成开发环境,MySQL数据库信息如下:

数据库地址:127.0.0.1

数据库用户:root

数据库密码:(空)

新建一个flaskblog数据库,作为示例数据库。

 

二、Flask-SQLAlchemy配置及MySQL数据库连接

1、安装依赖包

在开始之间,要先安装安装flask-mysqldb和flask-sqlalchemy两个包。

pip install flask-mysqldb

pip install flask-sqlalchemy

 

2、初始化一个Flask程序,导入Flask-SQLAlchemy

from flask_sqlalchemy import SQLAlchemy
from flask import Flask, jsonify, request
app = Flask(__name__)


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

 

3、数据库配置

首先要配置前面准备工作中的数据库相关信息,以便在连接数据库时用到这些信息。这里使用单独配置文件的方式来配置数据库相关的信息。新建配置文件db.conf,在文件中配置数据库连接所需的信息。

[DB]
DB_USER: root
DB_PASSWORD:
DB_DB: flaskblog
DB_HOST: 127.0.0.1

上面配置文件的使用中括号[]用来分模块区别不同部分类别的配置信息,让我们更简明地结构化配置文件。

 

接下来第二步就是在主程序(users.py)中拿到上面数据库配置文件(db.conf)中的信息。使用的是python的configparser配置解析模块。在主程序(users.py)中加入:

import configparser

my_config = configparser.ConfigParser()
my_config.read('db.conf')

上面的代码将读取到db.conf中配置的信息,并通过my_config.get(‘DB’, ‘DB_USER’)获取到配置文件中变量的值。

 

4、MySQL数据库连接

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://' + my_config.get('DB', 'DB_USER') + ':' + my_config.get('DB', 'DB_PASSWORD') + '@' + my_config.get('DB', 'DB_HOST') + '/' + my_config.get('DB', 'DB_DB')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

 

5、创建SQLAlchemy实例并注册到当前程序

最后,要将SQLAlchemy注册到我们定义的Flask程序中。

mydb = SQLAlchemy()
mydb.init_app(app)

 

至此,就完成了Flask与Flask-SQLAlchemy的整合,此时主程序代码如下:

from flask_sqlalchemy import SQLAlchemy
from flask import Flask, jsonify, request

import configparser

app = Flask(__name__)

my_config = configparser.ConfigParser()
my_config.read('db.conf')

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://' + my_config.get('DB', 'DB_USER') + ':' + my_config.get('DB', 'DB_PASSWORD') + '@' + my_config.get('DB', 'DB_HOST') + '/' + my_config.get('DB', 'DB_DB')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

mydb = SQLAlchemy()
mydb.init_app(app)


# 程序代码


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

 

接下来,我们分三部分来解决数据库操作的三种情况,即单表查询,联表一对多查询和联表多对多查询。

 

那时那我

jinyunblogadmin

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据