python - 为什么我得到 peewee.OperationalError
问题描述
我正在尝试使用名为 Product 的表将“项目”、“价格”、“库存”和最终“日期”添加到我的 inventory.db 中。如何在不轰炸代码的情况下获取这些数据。由于我是这类东西的新手,请详细说明我做错了什么。
另外,我如何为每个单独的产品名称制作一个 ID?我一直在寻找,但我只是看不到我在寻找什么。
这是我正在使用的内容:https ://github.com/OXDavidXO/Python-Project-4/blob/main/app.py 。
这是搞砸的部分:
inventory = {
'items': food_names,
'price': food_price,
'stock': food_stock,
'dates': dates_added
}
def add_products():
try:
food_item = Product.create(product_names = inventory['items'])
food_item.save()
except IntegrityError:
food_product = Product.get(product_names = inventory['items'])
解决方案
我猜你正在使用 Postgresql,虽然你没有提到什么 db. 当你进入一个糟糕的事务状态(例如通过捕获完整性错误)时,你需要回滚到一个好的状态才能继续。正确的做法是:
try:
with db.atomic() as tx:
food_item = Product.create(product_names = inventory['items'])
# calling save() again is redundant, removed.
except IntegrityError as exc:
food_item = Product.get(product_names = inventory['items'])
否则,请发布实际的回溯和错误消息。没有这些信息就很难调试。
推荐阅读
- odoo - 元素 '
' 不能位于父视图中 - java - 如何在插件 REST Spring Atlassian Connect API 中实现 JWT 授权?
- java - 强制 MapStruct 使用自定义方法而不是 dto 值
- docker - 在不同的用户下启动 docker 容器
- wordpress - 如何在没有父类别的情况下显示 wordpress 类别名称?
- codeigniter - 寻找类似的数据
- machine-learning - 问:为什么长短期记忆(LSTM)被称为长短两种类型的记忆?
- graph - 风暴拓扑的操作
- ios - 在 UI 生命周期的哪个时间点,分隔线作为子视图添加到 UITableViewCells?
- apache-kafka - 同一组中的两个 kafka 消费者和一个分区