模型抽离

将模型创建的代码抽离到单独的model.py文件中

创建models.py分离模型创建代码

from exts import db


article_tag = db.Table('article_tag',
                       db.Column('article_id', db.Integer, db.ForeignKey('article.id'), primary_key=True),
                       db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True)
                       )


class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(30), nullable=False)
    tags = db.relationship('Tag', secondary=article_tag, backref=db.backref('articles'))


class Tag(db.Model):
    __tablename__ = 'tag'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(30), nullable=False)


class T1(db.Model):
    __tablename__ = 't1'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

创建exts.py解决app.py和models.py循环引用问题

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

使用app_content方法解决app未注册问题

from flask import Flask
import config
from exts import db
from models import Article


app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)
with app.app_context():
    db.create_all()


@app.route('/')
def index():
    article1 = Article.query.filter(Article.title == 'b').first()
    tags = article1.tags
    print('Article Title: {}'.format(article1.title))
    for t in tags:
        print('Tag: {}'.format(t.name))
    return 'Index.'


if __name__ == '__main__':
    app.run()
├── app.py
├── config.py
├── db_scripts.py
├── exts.py
├── manage.py
├── models.py
├── pos.py
├── __pycache__
│   ├── app.cpython-35.pyc
│   ├── config.cpython-35.pyc
│   ├── db_scripts.cpython-35.pyc
│   ├── exts.cpython-35.pyc
│   └── models.cpython-35.pyc
└── templates
    ├── base.html
    ├── index.html
    └── login.html

results matching ""

    No results matching ""