デバッグしようとしている次のメソッドがあります。私の問題は、main から insertNewDataInDatabase() メソッドを呼び出すと、メソッドの for ループの先頭に移動しますが、データベース実行ステートメントをスキップしてすぐに getInStockItems() メソッドに移動することです。私はすでにそのメソッドを呼び出しており、insertNewDataInDatabase はそれを呼び出していないためです。
問題に関係がある場合、データセットはジェネレーターオブジェクトです。
どんな助けでも大歓迎です!
def deleteOldDataFromDatabase(company, c):
c.execute('DELETE FROM company WHERE Company=?',(company,))
def insertNewDataInDatabase(items, c):
for each in items:
c.execute('INSERT INTO ammo VALUES (?, ?, ?, ?, ?, ?)', ("NULL", each["Company"], each["Value"],
each["Product"], each["Price"], each["Url"]))
def getInStockItems(c):
for i in chain(ctd.main()):
deleteOldDataFromDatabase(i[1], c)
for each in i[0]:
yield each
def retrieveDatafromDB(c):
c.execute("SELECT * from company")
return c.fetchall()
def main():
with sqlite3.connect(database) as connection:
c = connection.cursor()
dataset = getInStockItems(c)
insertNewDataInDatabase(dataset, c)
return retrieveDatafromDB(c)
if __name__ == '__main__':
main()