一、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、项目实战

  

  

flask项目实用篇_sqlalchemy

  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