Flask数据库插件安装与配置教程

Posted w1990end

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask数据库插件安装与配置教程相关的知识,希望对你有一定的参考价值。

Flask数据库插件安装与配置教程

数据插件安装

Flask使用数据库之前需要在python中安装额外的插件,这里主要用到Flask-script(命令扩展解释器)、Pymysql(数据库驱动)、Flask-SQLAchemy(ORM映射)和Flask-Migrate(命令工具)
Flask-script的安装命令如下:

pip3 install flask-script
  • 安装过程如图:

PyMySQL的安装命令如下:

pip3 install pymysql
  • 安装过程如图:

Flask-Migrate是一个扩展,它使用 Alembic 处理 Flask 应用程序的 SQLAlchemy 数据库迁移。数据库操作通过 Flask 命令行界面提供,Flask-SQLAchemy的安装命令如下:

pip3 install flask-sqlalchemy
  • 安装过程如图:

    Flask-Migrate的安装命令如下:
pip3 install flask-migrate
  • 安装过程如图:

Flask数据库配置

1、查看mysql数据库中由哪些数据库,命令如下:

show databases;

执行结果如图:

  • 如果数据库没有需要连接的数据库,可以提前新建一个数据库,我这里新建一个flask数据库,命令如下:

    create database flask charset=utf8;
    

    执行结果如图:

2、数据库连接配置

  • 在项目的configs文件中配置数据库连接,代码如下:

    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://username:password@host:port/databasename"
    

    mysql:是指连接的数据库名称
    pymysql:是指数据库的驱动
    username:是指登录数据库的用户名
    password:是指登录数据库的用户名密码
    host:是指访问的数据库的IP地址
    port:是指数据库的端口号
    databasename:是指访问的MySQL数据库中的那个数据库
    实战操作代码如下:

    class BaseConfig(object):
        # 基础配置
        DEBUG=True
    class DevelopmentConfig(BaseConfig):
        ENV='development'
        # 配置数据库的连接
        SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@127.0.0.1:3306/flask"
    
    class TestingConfig(BaseConfig):
        ENV = 'TESTING'
    
    class ProductionConfig(BaseConfig):
        ENV='production'
        DEBUG=False
    

3、在项目中的创建一个exts的包或者创建一个ext.py的文件,在__init__.py文件或ext.py文件创建数据库的映射对象,代码如下:

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

4、需要将创建好的db绑定到app,代码如下:

from flask import Flask
from configs import DevelopmentConfig
from exts import db

def create_app():
    app = Flask(__name__)
    # 加载配置文件
    app.config.from_object(DevelopmentConfig)
    # 绑定db,初始化app
    db.init_app(app)

    return app


5、配置启动文件app.py,配置Flask-script,而且需要将Flask-Migrate跟app关联以Manager关联,代码如下:

from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager


from apps import create_app
from exts import db

app = create_app()
manager = Manager(app=app)
# 将Migrate与app进行关联,影响数据库的映射
migrate = Migrate(app=app,db=db)
# 添加Migrate命令到Manager进行管理
manager.add_command('db', MigrateCommand)

if __name__ == '__main__':
    manager.run()

  • 使用命令python3 app.py,查看关联的结果,如图:

    Perform database migrations:执行数据库的迁移的操作
  • 可以使用命令python3 app.py db --help查看数据库操作的命令,如图:
  • 如果需要取消上图中的警告,需要在configs.py中添加SQLALCHEMY_TRACK_MODIFICATIONS = False这句代码,代码如下:
class BaseConfig(object):
    # 基础配置
    DEBUG=True
class DevelopmentConfig(BaseConfig):
    ENV='development'
    # 配置数据库的连接
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@127.0.0.1:3306/flask"
    SQLALCHEMY_TRACK_MODIFICATIONS = False

class TestingConfig(BaseConfig):
    ENV = 'TESTING'

class ProductionConfig(BaseConfig):
    ENV='production'
    DEBUG=False

6、创建数据库模型,在app包文件下,创建一个models.py文件,创建一个类的来映射成一张表,该文件中可以有多个数据模型类,代码如下:

# ORM对象关系映射,通过类来映射一张表
# 通过类的对象映射到表中的一条记录
from datetime import datetime

from exts import db
# 该段程序相当于 craete table user(id int primarykey auto_increment,username varchar(20) not null,....)
class User(db.Model):
    # db.Column(类型,约束)映射到数据表中的列
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(20),nullable=False,unique=True)
    password = db.Column(db.String(16),nullable=False)
    rdatetime = db.Column(db.DateTime,default=datetime.now)

    def __str__(self):
        return self.username,self.id,self.password,self.rdatetime

7、使用命令将数据库模型中的创建的表映射到数据库中:

  • 首先将数据库模型models.py导入到启动文件app.py文件中,代码如下:

    from flask_migrate import Migrate, MigrateCommand
    from flask_script import Manager
    from apps import create_app
    from exts import db
    from apps.models import User
    
    app = create_app()
    manager = Manager(app=app)
    # 将Migrate与app进行关联,影响数据库的映射
    migrate = Migrate(app=app,db=db)
    # 添加Migrate命令到Manager进行管理
    manager.add_command('db', MigrateCommand)
    
    if __name__ == '__main__':
        manager.run()
    

  • 在终端中使用db命令python3 app.py db init生成一个migrations文件夹,该命令一个项目只需执行一次,执行过程如下:

  • 在终端中使用db命令python3 app.py db migrate产生一个数据库的版本文件,版本文件可以有个,执行过程如图:

  • 最后在终端中使用db命令python3 app.py db upgrade将数据模型中的数据映射数据库中去,执行过程如图:

8、检查flask数据库中是否创建了User表:

  • 重新登录MySQL数据库,如图:

  • 查看数据库,如图:

  • 切换为flask数据库,如图:

  • 查看flask数据库中的表,如图:

  • 查看user表中的数据,如图:

    出现以上数据,表示创建表已经成功了

至此,Flask数据库插件安装与配置已经介绍完成!

以上是关于Flask数据库插件安装与配置教程的主要内容,如果未能解决你的问题,请参考以下文章

Flask数据库插件安装与配置教程

轻量级NoSQL数据库与PythonWeb-Flask框架组合使用4-项目布局及应用配置

Flask-Avatars插件教程

轻量级NoSQL数据库与PythonWeb-Flask框架组合使用1-SQLite3介绍及安装教程

flask蓝图与插件

Flask插件与蓝图