SQLAlchemy错误TVP的行必须是序列对象

2024-09-29 21:44:05 发布

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

C#devoper在玩python,我在使用SQLAlchemy向SQL数据库插入行时遇到了问题。

更新代码是这样的。

def updateDatabase(self, testSummary):
        params = quote_plus(
            "DRIVER={ODBC Driver 17 for SQL Server};SERVER=GBBED01DB01\SQLHOTEL2;DATABASE=TesterDb;trusted_connection=yes")
        engine = create_engine(
            "mssql+pyodbc:///?odbc_connect={}".format(params))

        Session = sessionmaker(bind=engine)

        session = Session()
        session.add(testSummary)

        for testStepResult in testSummary.testStepResults:   <------- Exception
            session.add(testStepResult)
            for ictResult in testStepResult.ictResults:
                session.add(ictResult)

        try:
            session.commit()
        except Exception as e:
            print("SQL failed to save\n" + e)

我已经标记了异常发生的位置,这就是异常。

(pyodbc.ProgrammingError) ("A TVP's rows must be Sequence objects.", 'HY000') [SQL: 'INSERT INTO [IctResults] ([didTestPass], [testName], component, [lowerLimit], [upperLimit], measured, [rawMeasured], [isOverRange], [isUnderRange], [isPosativeInfinity], [isNegativeInfinity], [testStepResultId]) OUTPUT inserted.id VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'] [parameters: (1, 'Motor Resistance Check', 'Motor', (2224.0,), (2409.0,), (2292.9794921875,), (2292.9794921875,), 0, 0, 0, 0, 129649)]

表结构如下所示

^{pr2}$

也许我的关系安排不对,但应该是这样。 一个“Test Summary”包含多个“TestStepResult”,一个“TestStepResult”包含多个“IctResult”。


Tags: inaddforsqlsessionexceptionparamsengine

热门问题