zoukankan      html  css  js  c++  java
  • flask_sqlalchemy 命名遇到的一个小坑

    大概用了三个小时的时间.

    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") 之后, 顺利创建.

  • 相关阅读:
    Django-序列化器
    HTTP请求头响应头的信息
    HTTP协议
    IAAS,PAAS,SAAS
    MySQL-部分名词解释
    MySQL-事务和特性
    用Java仿QQ界面聊天小项目
    25篇Java入门技术博客,送给准备入坑的你
    Java自学推荐书籍
    Java中的并发讲解
  • 原文地址:https://www.cnblogs.com/senjougahara/p/6180458.html
Copyright © 2011-2022 走看看