大概用了三个小时的时间.
models.py
class DriveRecord(db.Model): """drive record model""" id = db.Column(db.Integer(), primary_key=True) piolt_id = db.Column(db.Integer(), db.ForeignKey("piolt.id")) request = db.Column(db.Text()) response = db.Column(db.Text()) logs = db.relationship( "Log", backref="driverecord", lazy="dynamic" ) class Log(db.Model): """log""" id = db.Column(db.Integer(), primary_key=True) driverecord_id = db.Column(db.Integer(), db.ForeignKey("driverecord.id")) command = db.Column(db.String(50)) sn = db.Column(db.String(50)) hostname = db.Column(db.String(100)) idc = db.Column(db.String(50)) ip = db.Column(db.String(50)) iloip = db.Column(db.String(50)) result = db.Column(db.Text()) req_time = db.Column(db.DateTime()) resp_time = db.Column(db.DateTime())
执行 db.create_all(), 报错: NoReferencedTableError: Foreign key associated with column 'log.driverecord_id' could not find table 'driverecord' with which to generate a foreign key to target column 'id'
找不到 driverecord, 然鹅, 检测了拼写之后, 确认没有问题.
直到一位老司机想起一个细节, DriveRecord 类, 创建的 table 名应该是 drive_record!
改成 db.ForeignKey("drive_record.id") 之后, 顺利创建.