gpt4 book ai didi

python - PeeWee 整数主键需要 force_insert=True

转载 作者:行者123 更新时间:2023-11-30 23:46:47 26 4
gpt4 key购买 nike

我正在使用出色的 PeeWee 模块将一些 ID 和主机名保存到 MySQL 表中。我希望“clientId”(它是一个 IntegerField)成为主键,但我似乎需要使用 save(force_insert=True) 来插入它——否则我什么也得不到 table 。我没有收到任何错误消息。我认为只有在 primary_key 字段不是整数时才需要这样做。我指的是文档 - ( https://peewee.readthedocs.org/en/2.0.2/peewee/fields.html#non-integer-primary-keys )

我的模型:-

class BaseModel(peewee.Model):
class Meta:
database = db

class Client(BaseModel):
clientId = peewee.IntegerField(primary_key=True)
clientName = peewee.TextField()
isDeletedClient = peewee.BooleanField(default=False)

#Create object to insert using collected data...
clientEntry = Client(clientId=clientId,
clientName=clientName,
isDeletedClient=isDeletedClient)

#clientEntry.save() # <-- Nothing gets inserted
clientEntry.save(force_insert=True) # <-- Works.

非常感谢您的回复。我相信我错误地使用了 save() 方法。如果记录已经存在并带有主键,我应该使用 create() 而不是 save(),它可以执行更新,因为我的脚本总是创建一个新的空表,然后填充它。

所以现在我的模型保持不变,但插入一行变成...

clientEntry = Client.create(clientId=clientId, 
clientName=clientName,
isDeletedClient=isDeletedClient)

最佳答案

这是一个微妙的问题,但如果您想要自动递增主键字段,您应该使用PrimaryKeyField 而不是IntegerField(primary_key=True).

这应该可以解决问题:

class Client(BaseModel):
clientId = peewee.PrimaryKeyField()
clientName = peewee.TextField()
isDeletedClient = peewee.BooleanField(default=False)

关于python - PeeWee 整数主键需要 force_insert=True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33143444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com