选择行并使用它来更新表sqlalchemy

2024-04-19 08:07:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从数据库中获取数据,并使用该查询对象将其映射到ORM类straighaway。 下面是模型和代码

    from sqlalchemy import Column, DateTime, ForeignKey, Integer, String, func
from sqlalchemy.orm import backref, relationship
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class AppLogs(Base):
    __tablename__ = 'AppLogs'
    id = Column(Integer, primary_key=True)
    StartDateTime = Column(DateTime)
    EndDateTime = Column(DateTime)
    ElapsedTime = Column(DateTime)

class AppLogsDetails(Base):
    __tablename__ = 'AppLogsDetails'
    id = Column(Integer, primary_key=True)
    Tablename = Column(String)
    NumberOfInserts = Column(Integer)
    NumberOfErrors = Column(Integer)
    AppLogsID = Column(Integer, ForeignKey('AppLogs.id'))
    AppLogs = relationship(
        AppLogs,
        backref=backref('AppLogsDetails',
                         uselist=True,
                         cascade='delete,all'))

class AppLogsErrors(Base):
    __tablename__ = 'AppLogsErrors'
    id = Column(Integer, primary_key=True)
    Tablename = Column(String)
    ErrorMessage = Column(String)
    AppLogsID = Column(Integer, ForeignKey('AppLogs.id'))
    AppLogsDetailsID = Column(Integer, ForeignKey('AppLogsDetails.id'))
    AppLogs = relationship(
        AppLogs,
        backref=backref('AppLogsErrors',
                         uselist=True,
                         cascade='delete,all'))
    AppLogsDetails = relationship(
            AppLogsDetails, 
            backref=backref('AppLogsErrors', 
                            uselist=True,
                            cascade='delete, all', lazy= 'dynamic'))

我就是这样打电话的。我正在尝试获取app\u错误并将其FK保存在applogsdeails表中

    app_logs_details = AppLogsDetails(Tablename=tableName, NumberOfInserts= num_inserts,NumberOfErrors=num_errors, AppLogs=app_log)
current_db_sessions = db_session.object_session(app_logs_details)
current_db_sessions.add(app_logs_details)
app_errors = current_db_sessions.query(AppLogsErrors).filter(AppLogsErrors.AppLogs == app_log)
app_errors.AppLogsDetails = app_logs_details
current_db_sessions.add(app_logs_details)

Tags: idtrueappdbdatetimestringcolumninteger