1.0 主文件models
from exts import db
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True,autoincrement=True)
username = db.Column(db.String(50))
email = db.Column(db.String(50))
article_tag_table = db.Table(
'article_tag',
db.Column('article_id', db.Integer, db.ForeignKey('article1.id')),
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'))
)
class Alticle(db.Model):
__tablename__ = 'article1'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title = db.Column(db.String(50))
context = db.Column(db.String(50))
uid = db.Column(db.Integer, db.ForeignKey('user.id'))
auth = db.relationship('User', backref='articles')
tags = db.relationship('Tag', secondary=article_tag_table, backref='tags')
class Tag(db.Model):
__tablename__ = 'tag'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(50))
3.0 建立中间文件exts
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
4.0 配置文件config
HOSTNAME = '127.0.0.1'
USERNAME = 'root'
PASSWORD = 'root'
PORT = '3306'
DATABASE = 'loft'
DB_URL = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URL
SQLALCHEMY_TRACK_MODIFICATIONS = False
5.0 操作三部曲
- flask db init 初始画迁移文件夹
- flask db migrate 把当前模型添加进迁移文件中
- flask db upgrade 最后把迁移文件中对应的数据库操作,真正映射到数据库中