【发布时间】:2013-04-21 01:08:53
【问题描述】:
我有以下脚本:
from peewee import *
db = MySQLDatabase('database', user='root')
class BaseModel(Model):
class Meta:
database = db
class Locations(BaseModel):
location_id = PrimaryKeyField()
location_name = CharField()
class Units(BaseModel):
unit_id = PrimaryKeyField()
unit_num = IntegerField()
location_id = ForeignKeyField(Locations, related_name='units')
db.connect()
for location in Locations.select():
for pod_num in range (1, 9):
unit = Units.create(unit_num=pod_num, location_id=location.location_id)
表格位置的行数很少,表格单元为空。当我尝试启动它时,我不断收到异常:
(1054, "Unknown column 'location_id_id' in 'field list'")
我做错了什么?
这是创建表的部分 SQL 脚本:
CREATE TABLE IF NOT EXISTS `database`.`units` (
`unit_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`unit_num` TINYINT UNSIGNED NOT NULL ,
`location_id` INT UNSIGNED NOT NULL ,
PRIMARY KEY (`unit_id`) ,
UNIQUE INDEX `ID_UNIQUE` (`unit_id` ASC) ,
INDEX `location_idx` (`location_id` ASC) ,
CONSTRAINT `location_id`
FOREIGN KEY (`location_id` )
REFERENCES `database`.`locations` (`location_id` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
提前谢谢你!
【问题讨论】:
-
创建表后是否更改了模型的字段?
-
丹尼斯,不是我没有,我才刚开始学peewee,上面的代码几乎就是我的全部了。
-
你是如何创建这个表的?
-
上面有SQL脚本(我用的是Workbench,所以是EER模型->导出脚本->运行脚本)。刚刚发现将列 'location_id' 重命名为 'location' 解决了问题:)
-
但我仍然想使用“location_id”名称(因为我不允许在生产数据库中更改其名称),所以问题仍然存在