0
,所以我试图调用MySQL的函数TIMEDATEDIFF与第二常量作为第一个参数,像这样使用MySQL的SQLAlchemy的语法常量
query = session.query(func.TIME(Log.IncidentDetection).label('detection'), func.TIMESTAMPDIFF(SECOND,Log.IncidentDetection, Log.IncidentClear).label("duration")).all()
print(query)
我已经尝试过作为一个字符串,我得到一个MySQL/MariaDB的错误:
query = session.query(func.TIME(Log.IncidentDetection).label('detection'), func.TIMESTAMPDIFF("SECOND",Log.IncidentDetection, Log.IncidentClear).label("duration")).all()
print(query)
给了我这个
sqlalchemy.exc.ProgrammingError: (mysql.connector.errors.ProgrammingError) 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''SECOND', log.`IncidentDetection`, log.`IncidentClear`) AS duration
FROM log' at line 1 [SQL: 'SELECT TIME(log.`IncidentDetection`) AS detection, TIMESTAMPDIFF(%(TIMESTAMPDIFF_1)s, log.`IncidentDetection`, log.`IncidentClear`) AS duration \nFROM log'] [parameters: {'TIMESTAMPDIFF_1': 'SECOND'}]
我相信这是简单的东西,某种转义序列或导入,我失踪。我查阅了sqlalchemy文档无济于事。
这听起来像你想在一个字符串传递到位的查询一个单位。 – univerio
第一个和第二个例子都会引发一个错误,第一个引发错误,因为SECOND没有在python中定义,第二个例子因为“SECOND”不是TIMESTAMPDIFF函数的有效参数而失败 – kyle