前提

  • 了解 Flask 的基本使用

MySql

一、安装 MySql

二、Flask 配置 SQL

Flask 的一个插件: Flask-SQLAlchemy ,它能够将对象和 MySql进行映射。

pipenv install flask-sqlalchemy

三、配置文件

在项目文件中,创建 config.py ,在里面配置数据库的信息。具体配置字段: https://flask-sqlalchemy.palletsprojects.com/en/2.x/config/

USERNAME = 'root'
PASSWORD = 'root'
HOST = '127.0.0.1'
PORT = 3306
DATABASE = 'db_test'

# 数据库链接 URI
DB_URI = 'mysql+mysqldb://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOST, PORT, DATABASE)

SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS = True # 配置修改追踪

这里使用了 mysqldb ,通过一下命令安装:

pipenv install mysqlclient

创建数据库 db_test :

mysql> create database db_test;

四、连接测试

app.py 中引用相关配置,创建数据库对象:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)
# 使用配置
app.config.from_object(config)

# 实例化数据库对象
db = SQLAlchemy(app)

# 调用 db 的 create_all() 方法
db.create_all()

@app.route('/')
def index():
    return '这是首页!!'

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

运行 app.py

pipenv shell
python app.py

如果不报错,说明数据库连接成功。

五、对数据的增删改查

假设我们需要一个数据表用来存储自己的健身数据,运动的项目名、时间、卡路里等。

那我们可以创建一个类 Model ,定义相关字段。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)
# 使用配置
app.config.from_object(config)

# 实例化数据库对象
db = SQLAlchemy(app)


class Fitness(db.Model):
    __tablename__ = 'fitness'

    id = db.Column(db.Integer, primary_key=True)
    sport_name = dc.Column(db.String(100))
    calorie = db.Column(db.Float)
    

@app.route('/')
def index():
    return '这是首页!!'

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

在上面,我们定义了 Fitness 类,继承了 Model,其中:

__tablename__ 指定表名
sport_name 指定运动名称
calorie 指定卡路里

通过 db.create_all() 将数据模型直接创建到 MySql 中。这里通过命令行的方式进行演示:

创建表

>>> from mysystem.app import db, Fitness
>>> db.create_all()
>>> fit1 = Fitness(sport_name='up', calorie=100)
>>> fit2 = Fitness(sport_name='down', calorie=200)
>>> db.session.add(fit1)
>>> db.session.add(fit2)
>>> db.session.commit()

增加数据

查所有数据:

>>> Fitness.query.all()
[<Fitness 1>, <Fitness 2>]

查询具体的数据

>>> fit2 = Fitness.query.get(2)
>>> print(fit2.sport_name)
'down'

查询多少条数据:

 >>> Fitness.query.count()
 2

>>> from mysystem.app import db, Fitness
>>> fit2 = Fitness.query.get(2)
>>> fit2.sport_name
'up'
>>> fit2.sport_name = 'updown'
>>> db.session.commit()

改变数据

>>> fit1 = Fitness.query.get(1)
>>> db.session.delete(fit1)
>>> db.session.commit()

删除数据

总结

本文通过 flask-sqlalchemy 对数据库进行了一些简单的操作。作为了解知识,不纳入项目一部分。

  • 配置
  • 连接
  • 数据的增删改查

后面还会讲到数据表之间的关联。