내가 파이썬에서 발전기 기능을 사용하여 연습, 그래서 다음과 같이 나는 기능을 정의 :사용 발전기 기능 파이썬
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 ...
한다 데이터베이스에있는 내용을 인쇄합니다. 또한 MySQL_product()
에있는 print
문 중 하나도 실행되지 않습니다. 생성자의 요점은 데이터베이스의 모든 행 목록을 반환하는 대신 하나씩 반환해야한다는 것입니다. 그런 다음 해당 항목에 액세스하거나 인쇄하려고했습니다. 이 코드를 수정하려면 어떻게해야합니까?
그래서'main'을 실행할 때 MySQL_product()에서'fetchall()'을'fetchone()'으로 변경합니까? –
한 번에 하나의 결과를 가져 오는 것은 꽤 느릴 수 있습니다. 최적의 크기는 mysql 서버가 조정되는 방법에 따라 다릅니다. 출발점으로 256을 시도하십시오. – synthesizerpatel
내가 무슨 말을하는지 잘 모르겠다면 편집 된 질문을 볼 수 있을까요? 네가하는 말을 이해한다면이 문제에서 발전기를 효율적으로 사용할 수 없습니까? –