2016-07-12 23 views
0

私はMariaDBサーバ(V 10.1.12)に接続し、いくつかのクエリの結果をファイルに保存するpythonスクリプトを書いています。次のクエリを送信するとき しかし、:PythonコードからのMariaDBクエリ

cursor.execute(sql)続い
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) 

、私は次のエラーを取得する:

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")

は、誰かがミスがあるものを私に説明してもらえますか?

ありがとうございます!

+0

私たちはあなたの 'runstr' – KRONWALLED

+0

runstrは、カンマで区切られた数字の文字列である必要があると思う。「runstr = 60092,60093,60094」 – id5h

答えて

1

ネストされた選択の周りの括弧を閉じなかった。他の問題のために、あなたが選択していないフィールドでグループ化している:それは

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) 

EDITでなければなりません。ヘルプについてはthis questionをご覧ください。

+0

申し訳ありませんが、その間違いは、コピーしたと私のデバッグの繰り返しのいずれかから貼り付けます。もともとは適切に閉鎖されていた。私は今問題を適切に編集した。ありがとう – id5h

+0

あなたの問題を解決するはずのリンクで私の答えを編集しました。 – Nee

関連する問題