Как выбрать записи, превышающие максимальное время, сохраненное в файле из предыдущей загрузки из таблицы в Pandas - PullRequest
3 голосов
/ 28 января 2020

У меня есть сценарий SQL, из которого я извлекаю данные, хранящиеся во фрейме данных.

Текущий код

cursor.execute("""
    SELECT * FROM ofs.ord_add oa
            WHERE
            oa.is_active = 'Y' AND   oa.or_ad_id = 5820  AND   oa.flag_value = 'Y'
    """)
    data3=cursor.fetchall()
    columns = [column[0] for column in cursor.description]
    order_addition = pd.DataFrame(data3,columns=columns)

** Токовый выход - Run1 **

ID     IS_ACTIVE   OR_AD_ID   FLAG_VALUE   INSERT TIMESTAMP
12300     Y          5820        Y         2020-01-06 08:12:53
14340     Y          5820        Y         2020-01-19 06:11:53

** Токовый выход-Run2 **

ID     IS_ACTIVE   OR_AD_ID   FLAG_VALUE   INSERT TIMESTAMP
12300     Y          5820        Y         2020-01-06 08:12:53
14340     Y          5820        Y         2020-01-19 06:11:53
22368     Y          5820        Y         2020-01-22 08:12:53
34567     Y          5820        Y         2020-01-24 06:11:53

Я хочу использовать условие в моем текущем коде, такое что:

1) max метка времени вставки последнего запуска сохраняется в файле

2) При следующем запуске запроса SQL в кадр данных загружаются только записи, превышающие максимальную метку времени, сохраненную в файле.

Ожидаемый выход после прогона 2

  ID     IS_ACTIVE   OR_AD_ID   FLAG_VALUE   INSERT TIMESTAMP
  22368     Y          5820        Y         2020-01-22 08:12:53
  34567     Y          5820        Y         2020-01-24 06:11:53

Как это можно сделать в python?

1 Ответ

0 голосов
/ 28 января 2020

Сначала создайте переменную с самого первого запуска:

unique_ids = tuple(dataframe.IDs.unique.tolist())

Затем выполните запрос sql в следующий раз

cursor.execute("""
     SELECT * FROM ofs.ord_add oa
              WHERE
             oa.is_active = 'Y' AND   oa.or_ad_id = 5820  AND   oa.flag_value = 'Y'
             AND oa.ID NOT IN %(unique_ids)s; 
"""
({'unique_ids':unique_ids})
)

протестируйте удержание места переменной. .. я, возможно, испортил это в этом коде. Но вся идея в том, что прежде чем снова выполнить запрос, получите переменную, а затем передайте ее в запрос. https://www.psycopg.org/docs/usage.html содержит руководство о том, как передавать переменные. Люблю получать ваши отзывы, работает ли это или нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...