Y at-il un avantage à écrire la fonction de générateur suivante en appelant simplement .fetchone()
dans une boucle while? Si oui, quel serait cet avantage?Y a-t-il un avantage à une fonction de générateur d'accès à la base de données?
Merci.
def testf2():
db = connectToMysqlDB(None)
sql_statement = " ".join([
"select d.* ",
"from dr_snapshot d ",
"order by d.PremiseID asc, d.last_read asc; "])
sel_cur = db.cursor()
rc = sel_cur.execute(sql_statement)
loop_ok = True
while loop_ok:
meter_row = sel_cur.fetchone()
if meter_row:
yield meter_row
else:
loop_ok = False
yield None
for read_val in testf2():
print(read_val)
#Perform something useful other than print.
('610159000', 6, datetime.datetime(2012, 7, 25, 23, 0), 431900L, 80598726L)
('610160000', 6, datetime.datetime(2012, 7, 25, 23, 0), 101200L, 80581200L)
None
probablement juste que son plus court de dire 'pour lire dans testf2(): doSomething' que de faire cette déclaration tout ... si son seul utilisé dans un endroit que vous n'êtes pas vraiment obtenir beaucoup, mais si vous faites cette requête à plusieurs reprises dans votre code, puis le mettre dans une fonction est conforme mieux SEC –
l'emballage python pour mySQL pas suivre l'exemple du module 'sqlite3' et mettre en œuvre les curseurs comme eux-mêmes iterables, vous permettant de faire' pour meter_row dans sel_cur: '? – JAB
@JAB Merci. C'était un bon point. – octopusgrabbus