我正在尝试创建一个将要求用户输入的python脚本。此输入将存储在两个单独的变量中,然后这些变量将用于查询配置单元以获取信息。以下代码:
person_database = []
full_name = raw_input('Enter Your Full Name: ')
residence_city = raw_input('Enter City of Interest: ')
def check(): #Define function
` cmd = "hive -S -e 'SELECT * FROM project.full_score WHERE` person_name=="full_name" AND city=="recidence_city";'"
person_database = commands.getoutput(cmd)
print person_database
现在的问题是,如何将变量传递给" cmd"在一个为Hive可以理解使用它们包含的内容,而不是变量名称?例如,如果" full_name"包含"约翰史密斯"和" residence_city"包含"温哥华"然后"约翰史密斯"和温哥华"应该成为查询的一部分。
答案 0 :(得分:1)
您只需将cmd视为字符串并构建所需的文本:
.......
cmd = "hive -S -e 'SELECT * FROM project.full_score WHERE` person_name=="%s" AND city=="%s";'"%(full_name,residence_city)
person_database = commands.getoutput(cmd)
print person_database
答案 1 :(得分:0)
您可以通过在变量之前和之后添加+
来完成此操作。这样您就可以将它们视为字符串,而+
只是将它们连接起来。 cmd = "hive -S -e 'SELECT * FROM project.full_score WHERE person_name=="+ full_name + " AND city==" + residence_city +";'"
答案 2 :(得分:0)
根据Pander的回答找到了更好的解决方案:
cmd = "hive -S -e 'SELECT * FROM project.full_score WHERE person_name==\"%s\" AND city==\"%s\";'"%(full_name,residence_city)
person_database = commands.getoutput(cmd)
print person_database
每个"之前的\ \诀窍,现在用户可以输入数据,而不必担心报价。
谢谢你们的帮助!!!