python-3.x - sqlalchemy.exc.InvalidRequestError:对象'- ' 已附加到会话 '5'(这是 '4')
问题描述
介绍
我正在尝试在表中播种数据以进行测试。为此,我正在使用工厂男孩包。
我已经建立了一个处理播种的工厂类。
class OrderItemFactory(factory.alchemy.SQLAlchemyModelFactory):
id = factory.Sequence(lambda n: n)
orders = factory.SubFactory(
'testsuite.database.factories.OrderFactory.OrderFactory')
items = factory.SubFactory(
'testsuite.database.factories.ItemFactory.ItemFactory')
class Meta:
model = OrderItem
sqlalchemy_session_persistence = 'commit'
问题
在测试中,我运行以下代码来创建订单。
# create order
order = OrderFactory.create()
item = session.query(Item).\
filter(Item.id == 1).\
first()
orderItem = OrderItemFactory.create(
orders=order,
items=item
)
但是,如果我要手动创建一行,一切正常。
orderItem = OrderItem(
order_id=order.id,
item_id=item.id
)
session.add(orderItem)
session.commit()
解决方案
如果您使用的是flask_sqlalchemy,那么您应该检查您是否插入了正确的字段,而不是数据库关系。
推荐阅读
- javascript - jQuery - 选择值等于的元素
- maven - 在eclipse中使用tomcat9作为部署服务器作为插件
- python - PyPI bezier 0.8.0:绘制平滑贝塞尔曲线所需的最少点数?
- messagebroker - 在消息代理计算节点上使用 ESQL 进行 xml 到 xml 字段属性转换
- ios - 当 Firebase 查询限制超过 9 时 iOS 应用程序崩溃
- python - 从python 3中的列表中删除特定元素
- api - 列出 Jenkins 下的所有文件夹及其路径
- php - 输出一个 var 和一个回显的测试结果?
- ruby-on-rails - 使用相同代码的 2 个测试之间的 Rspec 不一致结果
- java - 无法跨活动访问全局变量