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数据库插件安装与配置教程的主要内容,如果未能解决你的问题,请参考以下文章
轻量级NoSQL数据库与PythonWeb-Flask框架组合使用1-SQLite3介绍及安装教程