Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
414 views
in Technique[技术] by (71.8m points)

sql - Fetch a single record from table using list comprehension in python?

def fetch_maxno():
    dsn_tns = cx_Oracle.makedsn('host', 'port', service_name='serviceno')
    connection = cx_Oracle.connect(user='userno', password='pass', dsn=dsn_tns)
    cursor = connection.cursor()
    sqlquery = "SELECT MAX(ATTNO) AS MAXATTNO FROM HRT"
    cursor.execute(sqlquery)
    maxno = [{'maxattno': row[0]} for row in cursor.fetchall()]
    connection.close()
    return(maxno)

maxno = fetch_maxno()
    for max_atno in maxno:
       maxattno = (f"{maxno['maxattno']}")
       print(maxattno))

i have above code to get a single record from my table. i have code fetch_maxno function with db connection and query. select get one record from table in maxno variable. when i require a single record i am using for list comprehension and i think there is any easy way to get this maxattno without using this for loop. please guide me is there any other way to get this.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You just can use cursor.fetchone() rather than cursor.fetchall() such as

def fetch_maxno():
    dsn_tns = cx_Oracle.makedsn('host', 'port', service_name='serviceno')
    connection = cx_Oracle.connect(user='userno', password='pass', dsn=dsn_tns)
    cursor = connection.cursor()
    sqlquery = "SELECT MAX(attno) AS maxattno FROM hrt"
    cursor.execute(sqlquery)
    maxno = cursor.fetchone()
    connection.close()
    return(maxno)

maxno = fetch_maxno()[0]
print(maxno)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...