人生リアルタイムアタック

当面はPython学習帳

Pythonでは単要素のタプルにはカンマを使う

mysql.connector を使ってる際に、

cursor.execute('SELECT * FROM table WHERE hoge = %s', (fuge))

が動かずなんでだろうと思っていたら、 mysql-connector-python/cursor.py at master · mysql/mysql-connector-python

cursor.execute("SELECT * FROM t1 WHERE id = %s", (5,))

と書いており、(5,) ってなんぞ?と思ってたら、Pythonでは単要素のタプルにはカンマが必要らしい。

4. 組み込み型 — Python 3.4.3 ドキュメント にも、

単要素のタプルにはカンマを使う: a, or (a,)

そのちょっと下にも、

なお、タプルを作るのはカンマであり、丸括弧ではありません。丸括弧は省略可能ですが、空のタプルの場合や構文上の曖昧さを避けるのに必要な時は例外です。例えば、 f(a, b, c) は三引数の関数呼び出しですが、f( (a, b, c) ) は 3-タプルを唯一の引数とする関数の呼び出しです。

と書いてある。一つ勉強になった。