小编Dav*_*vic的帖子

我应该在 SQLAlchemy 中始终使用 'implicit_returning':False 吗?

总是在 SQLAlchemy 中使用有什么潜在的陷阱'implicit_returning': False

在处理定义了触发器的 MSSQL 表时,我多次遇到问题,并且由于数据库处于复制状态,因此所有表都有触发器。

我现在不确定问题到底是什么。它与自动增量字段有关 - 也许是因为我正在预取自动增量值,以便我可以将其插入到另一个表中。

如果我没有'implicit_returning': False为表设置,当我尝试插入值时,我会收到以下错误:

如果 DML 语句包含 OUTPUT 子句而不包含 INTO 子句,则该语句的目标表不能有任何启用的触发器。

那么,如果__table_args__ = {'implicit_returning': False}为了安全起见,我将其放入所有映射的类中呢?

对我来说特别令人沮丧的是,我用于开发和测试的本地数据库不在复制中,并且不需要该选项,但生产数据库被复制,因此当我部署更改时,它们有时不起作用。:)

python sql-server sqlalchemy

5
推荐指数
1
解决办法
1661
查看次数

SQLAlchemy:如何在字段上过滤多个关系?

我有一个分层的数据库结构,我想在一个深度为几个级别(关系)的字段上使用过滤器进行查询.

以下是类声明的示例:

class cTransfer(Base):
    __tablename__ = 'mesTransfer'
    transferID = Column(UNIQUEIDENTIFIER, primary_key=True, autoincrement=False)
    quanID = Column(UNIQUEIDENTIFIER, ForeignKey('mesQuantum.quanID'))
    quanObj = relationship('cQuantum', foreign_keys=[quanID], lazy='joined')

class cQuantum(Base):
    __tablename__ = 'mesQuantum'
    quanID = Column(UNIQUEIDENTIFIER, primary_key=True, autoincrement=False)
    orderItemID = Column(UNIQUEIDENTIFIER, ForeignKey('mesOrderItem.orderItemID'))
    orderItemObj = relationship('cOrderItem', foreign_keys=[orderItemID], lazy='joined')

class cOrderItem(Base):
    __tablename__ = 'mesOrderItem'
    orderItemID = Column(UNIQUEIDENTIFIER, primary_key=True, autoincrement=False)
    orderID = Column(UNIQUEIDENTIFIER, ForeignKey('mesOrderHeader.orderID'))
    orderHeaderObj = relationship('cOrderHeader', foreign_keys=[orderID], lazy='joined')
Run Code Online (Sandbox Code Playgroud)

我想获取其关联的orderID在某个列表中的所有cTransfer.

所以我试着这样做:

q = session.query(cTransfer).filter(cTransfer.quanObj.orderItemObj.orderID.in_([1, 2]))
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:"与"cTransfer.quanObj"相关联的"InstrumentedAttribute"对象和"Comparator"对象都没有属性"orderItemObj"

我怎么能这样查询?

sqlalchemy

2
推荐指数
1
解决办法
1056
查看次数

标签 统计

sqlalchemy ×2

python ×1

sql-server ×1