mysql-connector-pythonはSQLのSyntax Errorを拾ってくれない(ように見える)
いずれPR送って直したい。公式ライブラリのエラーハンドリングを疑ったことはなかったので...
TL;DR
connectionクラスでせっかく例外を投げているのに、
github.com
cursorクラスで雑なキャッチをして台無しにしている。
詳細
例えば、date型とdatetime文字列を比較しているSQLがあったとする。
クエリはprepared_statementとして処理されるので(Pythonが検証するわけでない)、MySQLからのSyntax Errorが返ってくる。
prepared_statementの生成は一応try-exceptされているが、レスポンスはサーバーから返ってきた文字列次第であるせいか?キャッチの仕方が極めて雑。
ライブラリなので標準出力もしていない。
try: self._prepared = self._connection.cmd_stmt_prepare(operation) except errors.Error: self._executed = None raise
結果、呼び出し側でtry-exceptを忘れてしまい困ることがありました。備忘。