디버깅하려는 다음과 같은 방법이 있습니다. 내 문제는 main에서 insertNewDataInDatabase() 메서드를 호출하면 메서드의 for 루프가 시작되지만 데이터베이스 실행 문을 건너 뛰고 즉시 getInStockItems() 메서드로 이동하여 이해가되지 않는 경우입니다. 나 이미 그 메서드를 호출하고 insertNewDataInDatabase 그것을 호출하지 않기 때문에.파이썬 건너 뛰기 방법
dataset은 문제와 관련이있는 경우 생성기 개체입니다.
도움이 될 것입니다.
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()
나는 Pycharm 디버거에서이 작업을 수행하고 있습니다. 그것은 insertNewDataInDatabase()의 각 행에 대해 실행되지만 실행 문으로 이동하는 대신 getInStockItems로 이동합니다. –