ユーザが入力した数値を受け取り、 "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クエリを構築する必要がありますか?
budget_queryに値が割り当てられた後で、最終結果がMySQLで照会したものと同じであることを確認してから印刷しましたか? –
私は理論を持っています。 MySQLでこのクエリを試してみてください: 'SELECT park_name FROM park Where admission_price <= '10 .00'' – Parfait
私はPythonがデータ型を引き継ぐと言っていましたし、ダブルを文字列に連結してから10.00は'10 .00 ' –