添加数据库部分字段到模块中测试迁移

本文介绍了添加数据库部分字段到模块中进行迁移测试的流程。包括在cars模块下创建model.py文件添加字段,在命令行初始化迁移文件,进行迁移时需引用数据库实例避免问题,最后将迁移数据保存到数据库中建表,完成字段添加。

添加数据库部分字段到模块中测试迁移

创建model.py文件添加字段

在cars模块下,添加model.py文件

from . import db
from datetime import datetime
class BaseModel(object):
    id = db.Column(db.Integer, primary_key=True)
    is_delete=db.Column(db.Boolean,default=False)
    create_time=db.Column(db.DATETIME,default=datetime.now)# create time
    update_time=db.Column(db.DATETIME,default=datetime.now,onupdate=datetime.now)

#create user model
class User(BaseModel,db.Model):
    __tablename__='sc_users'
    # id=db.Column(db.Integer,primary_key=True)
    name=db.Column(db.String(10),unique=True,nullable=True)
    password=db.Column(db.String(100),nullable=True)
    phone=db.Column(db.String(11),nullable=False)
    indentify =db.Column(db.String(18),nullable=True)
    cars= db.relationship('Car',backref='user')
    order=db.relationship('Order',backref='user')
    def __repr__(self):
        return self.phone

class Car(BaseModel,db.Model):
    __tablename__='sc_cars'
    # id=db.Column(db.Integer,primary_key=True)
    user_id=db.Column(db.Integer,db.ForeignKey('sc_users.id'))
    brand_id=db.Column(db.Integer,db.ForeignKey('brand.id'))
    price= db.Column(db.Integer,default=0,nullable=False)
    car_age=db.Column(db.Integer) #age of the car
    car_style=db.Column(db.String(10))#style of the car
    car_gearbox=db.Column(db.Integer,default=0)#0 for hand,1 for auto
    car_distance=db.Column(db.Integer)
    car_displacement=db.Column(db.Float)
    car_register_time=db.Column(db.DateTime)
    car_num=db.Column(db.String(100))
    car_color=db.Column(db.String(10))
    car_oil_type=db.Column(db.String(10))
    car_emission_standard=db.Column(db.String(10))
    seat_num=db.Column(db.Integer)
    transfer_time=db.Column(db.Integer)
    inspect_annually=db.Column(db.String(10))
    traffic_compulsory_insurance=db.Column(db.String(10))
    commercial_insurance=db.Column(db.String(10))
    images=db.relationship('Carimg')
    index_image_url=db.Column(db.String(100))

    orders=db.relationship('Order',backref='orders')

class Carimg(BaseModel,db.Model):
    __tablename__='car_img'
    # id=db.Column(db.Integer,primary_key=True)
    car_id=db.Column(db.Integer,db.ForeignKey('sc_cars.id'))
    url=db.Column(db.String(100))# img



class Brand(BaseModel,db.Model):
    __tablename__ = 'brand'
    # id=db.Column(db.Integer,primary_key=True)
    brand_name=db.Column(db.String(20))
    brand_style=db.Column(db.String(30))
    brand_style_detail=db.Column(db.String(50))
    cars=db.relationship('Car',backref='brand')
    def __repr__(self):
        return self.brand_name

class outsideproperties(BaseModel,db.Model):
    __tablename__='engineparameter'
    power_sunroof=db.Column(db.String(10))
    panoramic_sunroof=db.Column(db.String(10))
    Electric_suction_door=db.Column(db.String(10))
    Induction_trunk=db.Column(db.String(10))
    Rain_sensing_Wipers=db.Column(db.String(10))
    rear_wiper=db.Column(db.String(10))
    POWER_WINDOWS=db.Column(db.String(10))
    ELECTRIC_ADJUSTING_KNOB_EXTERIOR_REAR_VISION_MIRROR=db.Column(db.String(10))
    Rearview_mirror_heated=db.Column(db.String(10))

class Chassis_Brake(BaseModel,db.Model):
    __tablename__ = 'chassis_brake'
    # id = db.Column(db.Integer,primary_key=True)
    driving_mode = db.Column(db.String(15))#驱动方式
    help_type = db.Column(db.String(15))#助力类型
    front_suspension_type = db.Column(db.String(15))#前悬挂类型
    rear_suspension_type = db.Column(db.String(15))#后悬挂类型
    front_brake_type = db.Column(db.String(15))#前制动类型
    rear_brake_type = db.Column(db.String(15))#后制动类型
    parking_brake_type = db.Column(db.String(15))#驻车制动类型
    front_tire_specification = db.Column(db.String(20))#前轮胎规格
    rear_tire_specification = db.Column(db.String(20))#后轮胎规格

class Engine(BaseModel,db.Model):
    __tablename__ = 'sc_engine'

    displacement = db.Column(db.Float)
    # 进气形式
    intake_form = db.Column(db.String(50))
    # 气缸
    cylinder = db.Column(db.String(50))
    # 最大马力
    max_horsepower = db.Column(db.Integer)
    # 最大扭矩
    max_torque = db.Column(db.Integer)
    # 燃油类型
    car_fuel = db.Column(db.String(10))
    # 燃油编号
    fuel_num = db.Column(db.Integer)
    # 供油方式
    fuel_method = db.Column(db.String(10))
    # 排放标准
    emission_standard = db.Column(db.String(10))

class Basic_parameters(BaseModel,db.Model):
    __tablename__ = 'Basic_parameters'
    # id = db.Column(db.Integer, primary_key=True)
    certificate=db.Column(db.String(20))#证件品牌型号
    manufacturer = db.Column(db.String(20))#厂商
    level=db.Column(db.Integer)#级别
    engine = db.Column(db.String(20))#发动机
    gearbox = db.Column(db.String(20))#变速箱
    body_structure = db.Column(db.String(20))#车身结构
    size=db.Column(db.String(20))#长*宽*高(mm)
    wheel_base=db.Column(db.Integer)#轴距(mm)
    luggage_compartment=db.Column(db.Integer)#行李箱容积(L)
    curb_weight=db.Column(db.Integer)#整备质量(kg)
    def __repr__(self):
        return self.certificate


class Security(BaseModel,db.Model):
    __tablename__ = 'sc_security'
    # id = db.Column(db.Integer, primary_key=True)
    main_airbags = db.Column(db.String(15))  # 主副安全气囊
    anterior_airbags = db.Column(db.String(15))  # 前后排侧安全气囊
    front_airbags = db.Column(db.String(15))  # 前后头部安全气囊
    tire = db.Column(db.String(15))  # 胎压
    car_lock = db.Column(db.String(15))  # 车内中控锁
    child_lock = db.Column(db.String(15))  # 儿童锁
    key_lock = db.Column(db.String(15))  # 钥匙锁
    abs_lock = db.Column(db.String(15))  # ABS锁
    esp_lock = db.Column(db.String(15))  # ESP锁
    # car = db.relationship('Car', backref='brande')

    def __repr__(self):
        return 'sc_brande'

class Order(BaseModel,db.Model):
    __tablename__='sc_order'
    user_id=db.Column(db.Integer,db.ForeignKey('sc_users.id'))
    car_id=db.Column(db.Integer,db.ForeignKey('sc_cars.id'))
    order_time=db.Column(db.DateTime,default=datetime.now)
    car_price=db.Column(db.Float)
    server_charge=db.Column(db.Float)

测试的话是可以随便选择其中一个字段做测试的。

初始化迁移文件

转到命令行,进入虚拟环境和manage.py文件所在路径,键入

python manage.py 自定的数据库迁移命令 init

就可以生成一个迁移文件了
在这里插入图片描述

进行迁移

同样的,键入

python manage.py 自定的数据库迁移命令 migrate

这里直接migrate可能会产生问题
在这里插入图片描述
这个问题是因为没有使用一个数据库实例,然后就不能够迁移了
如果需要迁移,只需要在之前已经注册的蓝图模块中引用一下数据库就可以了
在这里插入图片描述
在这里插入图片描述
迁移好了把原来的那句话注释一下,不过留着也没事,这段话不会报错的

修改数据库建表

然后就是把迁移数据保存到数据库中建表,键入

python manage.py 自定的数据库迁移命令 upgrade

在这里插入图片描述
就添加成功了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值