来自 python 代码的 MariaDB 查询

MariaDB query from python code

我正在编写一个 python 脚本,它连接到 MariaDB 服务器 (V 10.1.12) 并将某些查询的结果保存到文件中。 但是,发送以下查询时:

sql =   'SELECT * FROM Monitor_Run_Tracking WHERE Entry IN (SELECT MAX(Entry) ' \
        'FROM Monitor_Run_Tracking WHERE Run in ({0}) ' \
        "AND WhenEntered<'{1}' GROUP BY Run)".format( runstr, quality_date )

后跟 cursor.execute( sql ),我得到以下错误:

File "build/bdist.linux-x86_64/egg/MySQLdb/cursors.py", line 174, in execute
File "build/bdist.linux-x86_64/egg/MySQLdb/connections.py", line 36, in defaulterrorhandler _mysql_exceptions.ProgrammingError: (1064, "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 ') AND WhenEntered<'2020-01-01' GROUP BY Run)' at line 1")

有人可以向我解释错误是什么吗?

谢谢!

您没有关闭嵌套 select 周围的括号。应该是

SELECT * FROM Monitor_Run_Tracking WHERE Entry IN (
        SELECT MAX(Entry)
        FROM Monitor_Run_Tracking WHERE Run in ({0})
        AND WhenEntered<'{1}')
GROUP BY Run

SELECT * FROM Monitor_Run_Tracking WHERE Entry IN (
        SELECT MAX(Entry)
        FROM Monitor_Run_Tracking WHERE Run in ({0})
        AND WhenEntered<'{1}'
        GROUP BY Run)

编辑:对于另一个问题,您正在按您没有selecting 的字段进行分组。查看 this question 寻求帮助。