Python で WolframAlpha の API に対する特定のクエリに対して、SQLite を使用して単純なキャッシュを作成しようとしています。問題は、特定のクエリで SQLite INSERT が失敗することです。その理由は本当にわかりません。
http://products.wolframalpha.com/api/explorer.htmlでは、私が実行した 2 つのクエリを正確に実行できます。彼らです:
nutritional information of coke
と
nutritional information of milk
最初のクエリの INSERT はうまく機能しますが、2 番目のクエリは失敗します。
キャッシュ機能を処理するコードは次のとおりです。
def run_query(input_query):
input_query = query_stub + input_query
cursor.execute('SELECT response FROM cache WHERE query=?', (input_query,))
response = cursor.fetchone()
if response:
print " Cache hit on: %s" % (input_query)
response = response[0]
else:
print " Cache miss on: %s" % (input_query)
query = waeo.CreateQuery(input_query)
print '1'
response = waeo.PerformQuery(query)
print '2'
cursor.execute('INSERT INTO cache VALUES (?, ?)', (input_query, response,))
print '3'
conn.commit()
print '4'
output_json = xmltodict.parse(response)
return jsonify(output_json)
テーブルは次のように定義されます。
cursor.execute('CREATE TABLE cache (query text, response text)')
以下はログの一部です。ご覧のとおり、INSERT は失敗しています。
* Running on http://0.0.0.0:8080/
Cache miss on: nutritional information of coke
1
2
3
4
127.0.0.1 - - [20/Sep/2013 17:51:16] "GET /wa?item=coke HTTP/1.1" 200 -
Cache miss on: nutritional information of milk
1
2
127.0.0.1 - - [20/Sep/2013 17:51:47] "GET /wa?item=milk HTTP/1.1" 500 -