ある、文字列を複数受け取って(スペース区切り)そちらをmysql-connector-pythonでmysqlに対してselectをかけようとしています。
最初に、文字列は固定 input_keywords = "アイスクリーム チョコレート"
で記載したところエラーが出てしまいました。
import mysql.connector input_keywords = "アイスクリーム チョコレート" cnx = mysql.connector.connect(user=user, password=password, host=host, database=dbname) cursor = cnx.cursor() # ここで設定した日付より最新のデータを検索する today = datetime.today() target_day = today - timedelta(days=3) target_sql_date = target_day.strftime('%Y-%m-%d') keywords = input_keywords.split() search_conditions = "" for i in range(len(keywords) - 1): search_conditions = search_conditions + "AND title LIKE %s " modify_keywords = "" for keyword in keywords: modify_keywords = modify_keywords + "'%" +keyword + "%'," search_keywords = modify_keywords.rstrip(",") query = "SELECT * FROM data WHERE title LIKE %s " + search_conditions + "AND updated_at > %s" row = cursor.execute(query, ( search_keywords , target_sql_date ) )
上記で投げると以下のようにエラーが出てしまいます。
Traceback (most recent call last): File "/opt/python/mysql/connector/cursor.py", line 83, in __call__ return bytes(self.params[index]) IndexError: tuple index out of range
一方
row = cursor.execute(query, ( search_keywords , target_sql_date ) )
この部分を
row = cursor.execute(query, ( '%チョコレート%', '%アイスクリーム%' , target_sql_date ) )
と実際に入るワードを入力するとエラーは出ません。
この search_word
の部分でのエラーであることはわかっていますが解決方法がわかりませんのでどなたかご教授いただけますでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。