質問

Python 2.7(Windows)

    for root, dirs, files in os.walk(self.DiskLocation, topdown=False):
        for name in files:
            path = os.path.join(root, name)
            print path #check it's what we think it is
            self.cur.execute("SELECT * from myTable WHERE Path = ?", (path))
.

はこれを降伏します...

SQLite3.Programmingerror:指定されたバインドの数が正しくありません。現在のステートメントは1を使用し、54が供給されています。

私のパス変数が54文字であることを認識するまで、54の付属のバインディングがどのようになっているかについて本当に混乱していました。しかし、SQLiteが文字列ではなく文字の長い文字数として解釈されているのはなぜですか。

役に立ちましたか?

解決

executeの2番目の引数は sequence です。

(path)を書きましたが、それらは通常の括弧ですので、それはpathと同じです。文字列は文字のシーケンスであり、したがってPythonはあなたが提供したシーケンス内の54文字のすべてに沿って忠実に渡されます。

あなたが欲しいものは(path,)です。これは1つの要素のタプルです。

タプルはコンマで作成され、ではなく括弧で囲まれています。

これが混乱している場合は、[path]を使用することができます。ここでもリストが大丈夫です。:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top