【发布时间】:2020-05-27 23:01:27
【问题描述】:
我们为每个客户端都有一个专用的 Postgres 数据库,因为我们无法在不发疯的情况下处理每个客户端的数据库迁移,所以我们使用的是原始 SQL 文件。我们有一个初始 SQL 文件,用于创建表并插入一些数据。在我们尝试使用INSERT INTO 语句将初始 SQL 脚本填充到之前填充的表中之后,问题就出现了。
不知何故,peewee 想使用 ID=1 创建新记录,从而引发IntegrityrError(我们从 SQL 文件创建了一堆)。我不确定如何处理这种情况。
我有一个基本模型:
class BaseModel(peewee.Model):
active = peewee.BooleanField(default=True)
created_at = peewee.DateTimeField(default=datetime.datetime.now)
updated_at = peewee.DateTimeField(null=True)
class Meta:
database = database
使用BaseModel的示例模型:
class UserRole(BaseModel):
user = peewee.ForeignKeyField(User)
role = peewee.ForeignKeyField(Role)
class Meta:
indexes = (
(('user', 'role'), True),
)
假设UserRole 有来自初始 SQL 脚本的 5 条记录。如果尝试使用烧瓶应用程序中的UserRole.create 创建新记录,则会收到关于 ID=1 的完整性错误。
有什么想法吗?
【问题讨论】:
-
我确定我无法回答这个问题。但它可能有助于未来的访问者实际拥有 1.您正在使用的完整 UserRole.create 命令的代码,这会导致错误和 2.实际的错误消息和可能指向堆栈跟踪的 gist 链接以及 3 . 你传递给 UserRole.create 的是什么,你传递的这些值的“类型”是什么
标签: python postgresql flask peewee