web-dev-qa-db-ja.com

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ではなく出力されるように、コードを変更するにはどうすればよいですか。

答えは簡単だと思いますが、私は初心者なので、どんな助けでも大歓迎です-ありがとう!

11
Jasmine078

cur.execute()は、影響を受ける行の数を返すだけです。実際の結果を取得するにはcur.fetchone()を、複数の行が必要な場合はcur.fetchall()を実行する必要があります。

21
Daniel Roseman

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'])

幸運を!

19
Guillermo Luque