0

私は SQLite と Python にかなり慣れていないので、少し混乱しています。Python で変数として関数に渡される部分文字列を含む列のすべての要素を返そうとしています。コードは実行されていますが、正しい結果ではなく空の結果が返されます。

一般化された名前のコードは次のとおりです。

def myFunc(cursor,myString):
    return cursor.execute("""select myID from Column where name like '%'+?'%' """,(myString,))

私が言ったように、コードはエラーなしで実行されますが、私が知っているはずの結果ではなく、空の結果を返します。ワイルドカードや疑問符の使用に関係があると思いますが、確信が持てません。誰にもアイデアはありますか?お時間をいただきありがとうございます。また、これは私の最初の投稿であるため、質問をするための推奨プロトコルのいずれかを見逃していた場合は、事前にお詫び申し上げます.

4

2 に答える 2

1

まあ、'%'+?'%'間違いなくうまくいきません—+左側で連結しようとしていますが、演算子がありません…</p>

LIKE正しく行えば -search フィールドを計算できます — この場合は <code>'%'+?+'%' です。これにより、一部のデータベースで問題が発生します (機能しない、検索の効率が低下するなど) が、少なくとも CL. のコメントによると、sqlite3 は問題ありません。

しかし、簡単なことは、パラメーターの一部ではなく、完全なパラメーターを置き換えることです。パラメータに入れることができ%、それはうまく解釈されます。そう:

return cursor.execute("""select myID from Column where name like ?""",
                      ('%'+myString+'%',))

'foo%'また、これには、最初の部分文字列 ( ) を検索する場合、同じ SQL ステートメントであるがパラメーターが異なるという利点もあります。

于 2013-10-05T05:17:59.600 に答える
-2

これを試して:

def myFunc(cursor,myString):
    return cursor.execute('select myID from Column where name like "{0}"'.format(myString))
于 2013-10-05T05:09:36.847 に答える