2017-11-02 17 views
0

ユーザが入力した数値を受け取り、 "set_budget"という変数に代入してからMySQL SELECTクエリを作成するPython3スクリプトを作成しています。私はMySQLdbデータベースコネクタライブラリを使用しています。Pythonで生成されたMySQL SELECTクエリが結果の完全なリストを返さない

set_budget = '' 
set_budget = sys.argv[1] 

budget = '' 
if set_budget == '0': 
      budget = '10.00' 
    elif set_budget == '1': 
      budget = '25.00' 
    elif set_budget == '2': 
      budget = '50.00' 
    else: 
      print('Enter "0" for $10.00, "1" for $25.00, and "2" for $50.00') 

budget_query = ("SELECT park_name FROM parks WHERE admission_price <= " + budget) 

cursor = connection.cursor(MySQLdb.cursors.DictCursor) 
cursor.execute (budget_query) 
result_set = cursor.fetchall() 

、ユーザが数「0」を入力する場合、これは理論的にSELECT park_name FROM parks WHERE admission_price <= 10.00のようなMySQLのクエリを作成する必要があります。私のコードの関連するセクションは次のようになります。 admission_price列は、データベース内の小数(5,2)のフィールドです。

SELECT park_name FROM parks WHERE admission_price <= 10.00をMySQLで直接クエリすると、admission_priceが0.00と10.00の間にあるすべてのパークが正しく返されます。

しかし、Pythonスクリプトを実行すると、入場価格が0.00〜9.99の公園だけが返されます。さらに、スクリプトに「1」と入力して25.00ドルのオプションを選択すると、10.00〜25.00の間にある一部の公園が除外され、admission_priceが正確に25.00のパークを除外します。

私はこのコードの実行に何か間違っているのですか、あるいは別の方法を使ってPythonでMySQLクエリを構築する必要がありますか?

+0

budget_queryに値が割り当てられた後で、最終結果がMySQLで照会したものと同じであることを確認してから印刷しましたか? –

+0

私は理論を持っています。 MySQLでこのクエリを試してみてください: 'SELECT park_name FROM park Where admission_price <= '10 .00'' – Parfait

+0

私はPythonがデータ型を引き継ぐと言っていましたし、ダブルを文字列に連結してから10.00は'10 .00 ' –

答えて

0

私のコードに間違いはありませんでした。 Ubuntu 16.04サーバーを再起動すると、問題は解決しました。なぜこれが起こったのか分かりませんが、他の誰かが同様の問題を経験した場合には、私は質問を残します。

関連する問題