flask项目实用篇
原创
©著作权归作者所有:来自51CTO博客作者林海峰4573的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、flask操作数据库项目
1、安装所需工具
pip3 install flask==1.1.2
pip3 install pymysql #连接mysql
pip3 install flask-sqlalchemy # 实现ORM映射
pip3 install flask-migrate==2.5.3 #发布命令工具
pip3 install flask_scripts # 管理工具
Flask-Migrate插件来解决之,Flask-Migrate插件是基于Alembic,Alembic是由大名鼎鼎的SQLAlchemy作者开发数据迁移工具。
1. 安装Flask-Migrate插件
$ pip install Flask-Migrate
2. 修改Flask App部分的代码,以增加Migrate相关的Command
db = SQLAlchemy(app)
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand
3. 初始化
$ python app.py db init
4. 数据迁移,自动创建迁移代码
$ python app.py db migrate
5. 更新数据库
$ python app.py db upgrade
后面如果有Model变更的话,在开发环境下只需要重复执行第4、5步即可。
而在服务器端只需要执行第5步即可实现数据库的迁移工作。
6. 启动项目
python app.py runserver
2、项目实战
apps/user/models.py
from datetime import datetime
from exts import db
class User(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(15), nullable=False)
password = db.Column(db.String(64), nullable=False) # 加密后位数
phone = db.Column(db.String(11), unique=True)
indelete = db.Column(db.Boolean, default=False)
rdatetime = db.Column(db.DateTime, default=datetime.now)
def __str__(self):
return
apps/__init__.py
from flask import Flask
from exts import db
# 导入配置
from settings import DevloymentConfig
def create_app():
app = Flask(__name__, template_folder='../templates', static_folder='../static')
app.config.from_object(DevloymentConfig)
# 初始化db
db.init_app(app=app)
return
exts/__init__.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
app.py
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from apps import create_app
from apps.user.models import User
from exts import db
app = create_app()
manager = Manager(app=app)
migrate = Migrate(app=app, db=db)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "wzs"
#2021/7/17
# 默认配置,公共配置
class Config:
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:Dl+wWQ_123@10.0.0.11:3306/flaskday01'
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY__ECHO = True
class DevloymentConfig(Config):
ENV = 'development'
class ProductionConfig(Config):
ENV = 'production'
DEBUG = False
settings.py