0

sqlite3 のファイルでの検索に問題があります。以下の列を持つデータベースがあります: タイトル、アーティスト、歌詞、追跡

私のコードは次のとおりです。

def search(title,artist,query):
 if title and artist and query:
  db = sqlite3.connect('songs.db')
  cursor = db.cursor()
  cursor.execute('SELECT ? FROM song WHERE title=? and artist=?',(query,title,artist))
  result = cursor.fetchall()

  if result:
     print result
  else:
     return False

text_factory を str に設定しましたが、別の問題が修正されました。データベースを sqliteman などのビューアーでチェックし、ターミナルを検索しようとしたところ、うまく機能しました。誰が何が悪いのか分かりますか?

4

1 に答える 1

0

SQL クエリのパラメーターは、常に固定値として置き換えられます。つまり、文字列は、列名としてではなく、常に文字列として置き換えられます。

クエリで列名をカスタマイズするには、SQL パラメーターを使用するのではなく、Python で置換を行う必要があります。

cursor.execute('SELECT %s FROM song WHERE title = ? AND artist = ?' % (query),
               (title, artist))
于 2013-09-24T06:41:50.597 に答える