1

次のコードを機能させることができません。クエリでpython変数を使用する方法は知っていますが、どういうわけかこれを正しく行うことができません。クエリで「icaocode」変数をハードコーディングすると、クエリは正常に機能しますが、変数を使用しようとすると機能しません。このコードの何が問題になっていますか?

icaocode = input()

c.execute("SELECT EXISTS(SELECT 1 FROM airports WHERE ICAO = ?)", (icaocode))
if c.fetchone():
    print("Found!")
else:
    print("Not found...")

受信したエラー:

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 supplied.
4

1 に答える 1

1

Python では、式を括弧で囲んでも違いはなく、(icaocode)とまったく同じicaocodeです。

このexecuteメソッドは、ある種のパラメーターのリストを想定しているため、文字列を 4 文字のシーケンスとして認識します。

要素が 1 つのタプルが必要であることを Python に伝えるには、コンマを追加する必要があります。

c.execute("... WHERE ICAO = ?", (icaocode,))
于 2013-09-16T21:03:25.687 に答える