Python 如何在SQLAchemy中使用Oracle触发器

Python 如何在SQLAchemy中使用Oracle触发器,python,oracle,triggers,sqlalchemy,Python,Oracle,Triggers,Sqlalchemy,我已经使用SQLAlchemy中的ORM定义了我的数据模型。我希望我的所有表格都包括三列 在 上次更新的 更新人 数据模型将部署在Oracle数据库架构中。我可以做类似的事情 from sqlalchemy import Column, DateTime, String from sqlalchemy.ext.declarative import as_declarative @as_declarative(bind=engine) class Base(object): creat

我已经使用SQLAlchemy中的ORM定义了我的数据模型。我希望我的所有表格都包括三列

  • 上次更新的
  • 更新人
  • 数据模型将部署在Oracle数据库架构中。我可以做类似的事情

    from sqlalchemy import Column, DateTime, String
    from sqlalchemy.ext.declarative import as_declarative
    
    @as_declarative(bind=engine)
    class Base(object):
    
        created_at = Column(DateTime, default=datetime.datetime.now(), nullable=False)
        updated_at = Column(DateTime, onupdate=datetime.datetime.now(), nullable=False)
        updated_by = Column(String, nullable=False)
    
    则不使用数据库默认时区,用户在插入/更改数据时必须手动识别自己。数据也可以被操纵


    我更愿意使用一个触发器,我知道这在Oracle中是可能的,但如何在SQLAlchemy中实现呢?如果可能的话,我强烈希望在SQLAlchemy中定义整个数据模型设计。

    我已经看到了这一点,但这还不足以解决我的问题。需要更具体的指导至少SQLAlchemy部分在@APC链接的副本中。其余部分是特定于Oracle的。顺便说一句,您的默认设置是错误的:您通过调用
    datetime.now()
    then and there将它们设置为固定的datetime。您应该传递函数本身,即
    default=datetime.now
    。如果需要,还可以使用默认时区正确的SQL函数表达式。类似于
    default=func.now()
    的内容,以及您可能需要的内容。