python - Peewee 和原始 SQL 创建语句
问题描述
我们为每个客户端都有一个专用的 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),
)
SayUserRole
有来自初始 SQL 脚本的 5 条记录。如果尝试使用UserRole.create
烧瓶应用程序创建新记录,则会收到关于 ID=1 的完整性错误。
有什么想法吗?
解决方案
在插入新数据之前,您需要修复为您提供 id 值的序列。这是一个如何做到这一点的例子。完成此操作后,请尽量避免在插入查询中使用显式 id,允许 db 为您分配 id 值
推荐阅读
- node.js - MongoDB(Mongoose)按数组查询
- qt5 - 如何在正在运行的线程中立即取消 QSqldatabase::open?
- r - strwidth("W", cex = tl.cex) 中的错误:尚未调用 plot.new
- java - 变量定义中带有 findViewById 的 NullPointerException
- date - Tableau:日期格式为 MM/DD/YYYY HH:mm
- linux - 如何在 bash/shell 中节流管道
- javascript - WebGL 绘制三角形以一次显示一个点
- python - python中带有布尔值的简单计数器
- jquery - 从数组数组动态创建剑道下拉列表
- pandas - 逐组增长熊猫数据框