import pymssql
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase', as_dict=True)
cur = conn.cursor()
users = cur.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe').fetchall()
conn.close()
for row in users:
print "ID=%d, Name=%s" % (row['id'], row['name'])
カーソルを使用する代わりに、結果を何かに割り当ててみてください。
cur.execute()
は関数であり、値を返しますが (これはご覧のとおりです)、何にも割り当てていないため、ループを実行するときにfor
ループするものは何もありません。
結果を保存したくない場合は、この(かなり面倒な)バージョンを実行できます。
import pymssql
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase', as_dict=True)
cur = conn.cursor()
sql = 'SELECT * FROM persons WHERE salesrep=%s'
for row in cur.execute(sql, 'John Doe').fetchall():
print "ID=%d, Name=%s" % (row['id'], row['name'])
conn.close()
これはfor
の結果をループしますcur.execute()
が、私は本当にこれに反対することをお勧めします
(マイナーな補遺: fetchall を忘れてしまいました。これを関数に入れるのに慣れています。申し訳ありません)