添加数据库部分字段到模块中测试迁移
创建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

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

被折叠的 条评论
为什么被折叠?



