首页 > 解决方案 > 在 pandas 中验证日期时出现问题

问题描述

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 语句从数据框中获取日期并将其与当前日期匹配。

标签: python-3.xpandas

解决方案


知道了:

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 对一样解析对象,然后对其应用日期。


推荐阅读