Python でジェネレーター関数を使用する練習をしていたので、次のように関数を定義しました。
def MySQL_product():
#Establish connection to database
try:
connection = msql.connect(host = 'localhost', user = 'max', passwd = 'password', db = 'schools')
except:
pass
#Iterate through each product and insert them in database
with connection:
cursor = connection.cursor()
cursor.execute("SELECT name, age, gender, school
WHERE GroupId = 'student' AND Exchange = 'foreign'")
for product in cursor.fetchall():
yield product
def main():
for column in range (0, number_of_schools):
for product in MySQL_product():
print product
ただし、このコードを実行すると、出力として表示されるのgenerator object at ...
は、データベースで見つかったコンテンツを印刷しようとしているということだけです。また、 のprint
ステートメントMySQL_product()
は実行されません。ジェネレーターのポイントは、データベース内のすべての行のリストを返すのではなく、1 つずつ返す必要があるということです。次に、それらのアイテムにアクセス/印刷したいと思いました。このコードを修正するにはどうすればよいですか?