Socrata API: использование объекта для фильтрации базы данных - PullRequest
0 голосов
/ 07 октября 2019

Я хотел бы получать еженедельные обновления для заявок на получение разрешений, которые были поданы, но еще не утверждены с использованием этой базы данных, здесь . Я использовал их базовый код, который вы можете найти здесь в качестве шаблона.

Мой код, который работает так:

results = client.get("mkbn-caye", where = \
                 "received_date >= '2019-09-24T13:50:27.000' AND issued_date IS NULL"

Однако я бы хотелдействительно предпочитаю не менять дату каждый раз вручную, чтобы быть неделю назад. Я хотел бы, чтобы переменная / объект (извините, все еще изучал местный язык Python), такой как 'startPeriod_ts', представляли дату недели и программу для запуска. Что-то вроде этого:

results = client.get("mkbn-caye", where = \
                 "received_date >= 'startPeriod_ts' AND issued_date IS NULL")

Я бы увидел, что это работает примерно так, но в настоящее время не работает.

import pandas as pd
import datetime
from sodapy import Socrata
from time import time
from time import time, ctime

# Getting the correct time variables in the timestamp format.
now = datetime.datetime.now()
print(now)
print ("Now is: ", now)
oneWeekAgo = datetime.timedelta(days=-7) # defining the time scale to look back
print (oneWeekAgo)
startPeriod = now + oneWeekAgo #creating a new date based on timedelta
print (startPeriod)
startPeriod_ts = pd.Timestamp (startPeriod)
print (startPeriod_ts)

# Unauthenticated client only works with public data sets. Note 'None'
# in place of application token, and no username or password:
client = Socrata("data.marincounty.org",*myAppToken)

results = client.get("mkbn-caye", where = \
                     "received_date >= 'startPeriod_ts' AND issued_date IS NULL")
# "startPeriod_ts" is not readable by Socrata.
# Doesn't currently work. How to make a date variable that is seven days ago readable by Socrata. 


results_df = pd.DataFrame.from_records(results)
print(results_df)

Я получаю следующий результат с приведенным выше кодом:

«Трассировка (последний вызов был последним): файл» /home/noods/Documents/Cosas/Python/StackExchangeUpload.py ", строка 23, в файле" receive_date> = 'startPeriod_ts' ANDUEd_Date IS NULL ")"/home/noods/.local/lib/python3.6/site-packages/sodapy/init.py", строка 362, в файле get params = params) Файл "/home/noods/.local/lib/python3.6/site-packages/sodapy/init.py ", строка 477, в файле _perform_request _raise_for_status (response)" /home/noods/.local/lib/python3.6/site-packages / sodapy / init .py ", строка 531, в _raise_for_status поднять запросы"

Как можно отформатировать объект 'startPeriod_ts', чтобы он мог быть прочитан Сократомстоит? Спасибо за любую помощь!

...