Возникла проблема с проверкой даты в пандах - PullRequest
0 голосов
/ 26 ноября 2018
guid = str(uuid.uuid4())
username = config.username
dbpassword = config.dbpassword
dbhost = config.dburl
engine =  create_engine('mysql://%s:%s@%s/db?charset=utf8' %(username, dbpassword, dbhost), encoding="utf-8")
path = 'd:/anaconda3/lib/bin/'
jsonFiles = os.listdir(path)
maxSnapshotQuery = '''SELECT MAX(Snapshot) AS Snapshot FROM %s''' 

for file in jsonFiles:
    tableName = file.split(".")[0]
    snapshotCheck = pd.read_sql_query(maxSnapshotQuery %tableName, engine)
    print(snapshotCheck['Snapshot'].dt.date)
    if snapshotCheck['Snapshot'].dt.date == datetime.datetime.now().date():
        with open(path+file) as f :
         try:
             rawJson = json.load(f)
             rawJson['authorizations'][0]['id'] = guid
             print(f.name + ' Load Completed')
         except ValueError as error:
             print(error + ' ' + f.name + ' Check the JSON within')
             continue


        createSession()
        createJob(session)
        loadData(data, engine)

Я пытаюсь убедиться, что моментальный снимок за день еще не был взят и помещен в базу данных.Если он пропустил эту загрузку и перешел к следующей (это происходит в другой части кода), но я не могу заставить оператор if взять дату из фрейма данных и сопоставить ее с текущей датой.

1 Ответ

0 голосов
/ 26 ноября 2018

Понял:

for file in jsonFiles:
    tableName = file.split(".")[0]
    snapshotDate = pd.read_sql_query(maxSnapshotQuery %tableName, engine, parse_dates=['Snapshot'])

if snapshotDate.Snapshot[0].date() != datetime.datetime.now().date() :
    with open(path+file) as f :
     try:
         rawJson = json.load(f)
         rawJson['authorizations'][0]['id'] = guid
         print(f.name + ' Load Completed')
     except:
         print(f.name + ' Check the JSON within')
         continue


    createSession()
    createJob(session)
    loadData(data, engine)
else:
    print('Data already loaded for today for ' + file)

проанализировал объект как пару K, V, а затем применил к нему дату.

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