我正在编写一个Python3脚本,它接受用户输入的数字并将其分配给名为“set_budget”的变量,然后用于构造MySQL SELECT
查询。我正在使用MySQLdb数据库连接器库。我的代码的相关部分如下所示:
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)字段。
当我直接在MySQL中查询SELECT park_name FROM parks WHERE admission_price <= 10.00
时,它会正确返回enj_price介于0.00和10.00之间的所有公园。
但是,当我运行我的Python脚本时,只返回入场价介于0.00和9.99之间的公园。此外,如果我通过在脚本中键入“1”来选择25.00美元的选项,那么除了排除entry_price正好是25.00的公园之外,它莫名其妙地排除了一些价格在10.00到25.00之间的公园。
我是否在执行此代码时出错了,或者我应该使用不同的方法来使用Python构建MySQL查询?
答案 0 :(得分:0)
事实证明我的代码没有任何问题。当我重新启动我的Ubuntu 16.04服务器时,问题解决了。我不确定为什么会这样,但我会留下我的问题以防其他人遇到类似的问题。