python - Flask 迁移不适用于所有表
问题描述
我有一个项目,当我进行迁移时,我创建了四个表(用户、产品、代理、客户):flask db init、flask db migrate、flask db upgrade,只有用户和产品在这里被迁移这是我项目的结构:
我的用户模型代码是: from main.extensions import db from main.shared.base_model import BaseModel, HasCreatedAt, HasUpdatedAt class User(BaseModel, HasCreatedAt, HasUpdatedAt): tablename = 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String, unique=True, nullable=False)
password = db.Column(db.String, nullable=False)
phone = db.Column(db.Integer)
我从代理模型开始的每个模块的代码:
from main.extensions import db
class Agent(db.Model):
__tablename__ = 'agents'
id = db.Column(db.Integer, primary_key=True)
picture = db.Column(db.String)
def __init__(self,email, password, phone, picture):
self.email = email
self.password=password
self.phone=phone
self.picture=picture
对于客户的模型是:
from main.modules.user.models import User
from main.extensions import db
class Customer(User):
__tablename__ = 'customers'
approved = db.Column(db.Boolean)
picture = db.Column(db.String)
def __init__(self, email, password, phone, picture, approved):
self.approved = approved
self.picture = picture
User.__init__(self,email,password,phone)
最后产品模型有:
from main.extensions import db
from main.shared.base_model import BaseModel, HasCreatedAt, HasUpdatedAt
class Product(BaseModel, HasCreatedAt, HasUpdatedAt):
__tablename__ = 'products'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False)
settings.py 包含以下代码:每个模型的这个初始化文件都包含这个代码:对于用户 __init.py:
from main.modules.users.api import blueprint as api
对于客户 __init.py:
from main.modules.customer.api import blueprint as api
对于代理__init.py:
from main.modules.agent.api import blueprint as api
对于 prodcut__init.py:
from main.modules.product.api import blueprint as api
import os
class DevSettings(Settings):
DEBUG = True
basedir = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI="sqlite:///" + os.path.join(basedir, "data.sqlite")
SQLALCHEMY_TRACK_MODIFICATIONS=False
并且 extension.py 包含:
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
migrate = Migrate()
app.py 包含以下内容:
from flask import Flask, Blueprint
from main.extensions import db, migrate
from main.modules import product, agent, customer, user
from main.settings import DevSettings
MODULES = [ agent, customer,product, user]
main = Blueprint('main', __name__)
def create_app(settings=DevSettings):
app = Flask(__name__)
# Utiliser la configuration (settings).
app.config.from_object(settings)
app.config['SECRET_KEY'] = 'mysecretkey'
# On initialise les libraries Python.
# Init SQLAlchemy.
db.init_app(app)
# Init Migrate.
migrate.init_app(app, db)
app.register_blueprint(main)
register_modules(app)
return app
def register_modules(app):
for m in MODULES:
if hasattr(m, 'api'):
app.register_blueprint(m.api)
解决方案
推荐阅读
- jquery - 未知的 Web 方法 getTrackingNumber。参数名称:methodName
- php - 使用“pretty-url”路由时我的 css 文件未加载
- c# - 如果数据库中的日期比今天早一个月,C# ASP.NET 发送电子邮件
- router - 通过 WDS 连接到外部接入点的 TP-Link 路由器
- c++ - 我可以对向量进行排序以匹配 unordered_map 的排序吗?
- javascript - 如何通过 css 或 xpath 选择器将 html 表头单元格映射到行单元格?
- go - 使用带有 YAML 的 Go 模板
- c# - 将 lambda 表达式转换为 linq c#
- c# - 无法在 C# PictureBox 中显示 8MP 相机帧
- php - Key type is a duplicate in Composer