模型抽离
将模型创建的代码抽离到单独的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