Просмотр исходного кода

Attempt to fix weird row unpack error

Foppe Hemminga 6 лет назад
Родитель
Сommit
3b1ec30df6
1 измененных файлов с 46 добавлено и 30 удалено
  1. 46 30
      main.py

+ 46 - 30
main.py

@@ -51,40 +51,48 @@ if __name__ == '__main__':
 
         cursor.execute(query, (race_day.name, race_day.date))
         db_data = cursor.fetchall()
-        if len(db_data) == 1:
-            db_data = (db_data)
+        print(' 54. len(db_data): {}'.format(len(db_data)))
+        print(' 55. type(db_data): {}'.format(type(db_data)))
+        pprint(db_data)
 
         # compare retrieved scratchings with new data
         for scratching in scratchings:
             found_in_database = False
-            for row in db_data:
-                # print('row: ', end = '')
-                # print(type(row))
-                # print(row)
-                # if type(row) == 'datetime.time':
-                #     continue
-                try:
-                    date_in_db_row_formatted = row.race_date.strftime('%Y-%m-%d')
-                    if (
-                            scratching.date == date_in_db_row_formatted and
-                            scratching.venue == row.venue and
-                            int(scratching.race) == int(row.race) and
-                            scratching.horse == row.horse
-                    ):
-                        message_string = 'Horse found: date = {}, venue = {}, race = {}, horse = {}'
-                        message = message_string.format(scratching.date,
-                                                        scratching.venue,
-                                                        scratching.race,
-                                                        scratching.horse)
-                        # print(message)
-                        # print(row)
-                        found_in_database = True
-                except AttributeError as ae:
-                    print(ae)
-                    print('row: ', end='')
-                    print(row)
-                    pprint(db_data)
-                    continue
+            if db_data is None:
+                print(' 62. Caught db_data is None')
+                found_in_database = False
+            else:
+                for row in db_data:
+                    # print('row: ', end = '')
+                    # print(type(row))
+                    # print(row)
+                    # if type(row) == 'datetime.time':
+                    #     continue
+                    try:
+                        if not hasattr(db_data, 'name'):
+                            continue
+                        date_in_db_row_formatted = row.race_date.strftime('%Y-%m-%d')
+
+                        if (
+                                scratching.date == date_in_db_row_formatted and
+                                scratching.venue == row.venue and
+                                int(scratching.race) == int(row.race) and
+                                scratching.horse == row.horse
+                        ):
+                            message_string = 'Horse found: date = {}, venue = {}, race = {}, horse = {}'
+                            message = message_string.format(scratching.date,
+                                                            scratching.venue,
+                                                            scratching.race,
+                                                            scratching.horse)
+                            # print(message)
+                            # print(row)
+                            found_in_database = True
+                    except AttributeError as ae:
+                        print(ae)
+                        print(' 89. row: ', end='')
+                        print(row)
+                        pprint(db_data)
+                        continue
             if not found_in_database:
                 # report new scratching
                 date_object = datetime.datetime.strptime(scratching.date, "%Y-%m-%d").date()
@@ -97,6 +105,13 @@ if __name__ == '__main__':
                 """
                 cursor.execute(query, (scratching.date, scratching.venue, scratching.race))
                 db_data = cursor.fetchone()
+                if db_data is None or len(db_data) == 0:
+                    print('106. cursor.execute(query, (scratching.date, scratching.venue, scratching.race))')
+                    print('107. cursor.execute({}, ({}, {}, {}))'.format(
+                        query, scratching.date, scratching.venue, scratching.race
+                    ))
+                    print('110. No race found')
+                    continue
                 flag = ''
                 if db_data.torn:
                     flag = 'FLAGGED!! '
@@ -120,6 +135,7 @@ if __name__ == '__main__':
                 cursor.execute(query, (scratching.venue, scratching.date,
                                        scratching.race, scratching.horse))
                 db.commit()
+                print('Stored: {}'.format(scratching))
                 time.sleep(0.5)
     cursor.close()
     db.close()