flask_sqlalchemy 命名遇到的一個小坑

大概用了三個小時的時間.spa

models.pycode

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'blog

找不到 driverecord, 然鵝, 檢測了拼寫以後, 確認沒有問題.ip

直到一位老司機想起一個細節, DriveRecord 類, 建立的 table 名應該是 drive_record!ci

改爲 db.ForeignKey("drive_record.id") 以後, 順利建立.get

相關文章
相關標籤/搜索