Ich bin ein Neuling für Python, mit Python 2.7. Ich gebe eine Liste von Zeichenfolgen von der Befehlszeile aus und führe zwei verschiedene Abfragen unter Verwendung dieser Liste von Zeichenfolgen aus. Die Liste enthält 4 gültige IDs, die in der ersten Abfrage zurückgegeben werden. Die letzten beiden IDs sind ungültig. Ich muss beide Ergebnisse in eine Datei drucken.Python-Return-Liste, wenn Abfrage kein Ergebnis
ich die Abfrage leite als:
python empdetails.py -i "'ADM10','TMC34','LAB57','WSD44','GM22','AD32'" -o (file_location)
import os
import sys,getopt
from impala.dbapi import connect
def main(argv):
input = ''
output = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["input=","output"])
except getopt.GetOptError:
print 'Usage append.py -i <input> -o <output>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'Usage append.py -i <input> -o <output>'
sys.exit()
elif opt in ("-i", "--input"):
input = arg
elif opt in ("-o", "--output"):
output = arg
print input
conn = connect(host='hostname', port=port_number, auth_mechanism='GSSAPI', kerberos_service_name='impala', use_ssl=True)
cursor = conn.cursor()
sql = ('select empcode from empinfo where empcode in (select ecode from emptrav_det where ecode in({}))'.format(input))
cursor.execute (sql)
duplicate = cursor.fetchall()
sql =('select ecode from emptrav_det where exp_c in({})'.format(input))
print sql
cursor.execute (sql)
new = cursor.fetchall()
if duplicate !=0:
with open('output', 'a') as f:
for emp in duplicate:
f.write(str(emp[0]) + " " + ("Traveled\n"))
if new ==0:
with open('output', 'a') as f:
for emp in new:
f.write(str(emp[0]) + " " + ("Invalid ID\n"))
conn.close()
if __name__ == '__main__':
main(sys.argv[1:])
auf diese Weise versucht, aber nicht bekommen, die Ausgabe für ungültig, auch würde ich brauche die IDs zu drucken, die – Venkat
ungültig ist dann schreiben 'input' zu Ihrer Datei. Der Punkt ist, die Logik zu verstehen und was du falsch machst. 'input' ist ein falscher Variablenname btw; Es schattiert ein Python-eingebaut –