Выберите запрос в pymysql

При выполнении следующего:

import pymysql 



db = pymysql.connect(host='localhost', port=3306, user='root')
cur = db.cursor()    
print(cur.execute("SELECT ParentGuardianID FROM ParentGuardianInformation WHERE UserID ='" + UserID + "'"))

Результат1

Как я могу изменить код, чтобы фактическое значение ParentGuardianID (то есть «001») печаталось, а не 1.

Я уверен, что ответ прост, но я новичок, поэтому любая помощь будет очень признательна - спасибо!


person Jasmine078    schedule 15.02.2015    source источник


Ответы (2)


cur.execute() просто возвращает количество затронутых строк. Вы должны сделать cur.fetchone(), чтобы получить фактический результат, или cur.fetchall(), если вы ожидаете несколько строк.

person Daniel Roseman    schedule 15.02.2015

Метод cursor.execute() выдает курсор, связанный с результатом предложения SQL. В случае запроса select он возвращает строки (если они есть), которые ему соответствуют. Таким образом, вы можете перебирать эти строки, например, с помощью цикла for. Кроме того, я бы порекомендовал вам использовать pymysql.cursors.DictCursor, потому что он позволяет рассматривать результаты запроса как словарь.

import pymysql 
db = pymysql.connect(host='localhost', port=3306, user='root')
cur = db.cursor(pymysql.cursors.DictCursor)

UserId = 'whatsoever'
sql = "SELECT ParentGuardianID FROM ParentGuardianInformation WHERE UserID ='%s'"
cur.execute(sql % UserId)
for row in cur:
    print(row['ParentGuardianID'])

Удачи!

person Guillermo Luque    schedule 19.04.2016
comment
cur.execute(sql, UserId) лучше, чем cur.execute(sql % UserId), поскольку вы используете функцию для очистки ввода, а не просто используете форматирование строки Python. - person Flair; 05.08.2021