почему pandas возвращает пустой кадр данных из этого SQL-запроса, когда используется предложение WHERE? - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть программа на python, которая использует панды для записи их в csv, одно из значений столбца, которое я использую в качестве имени папки файла. Один из моих столбцов содержит даты в столбце CAST как просто дату в формате 2018-10-31, и мне нужна программа для создания файлов только на сегодняшний день. Когда я добавляю предложение AND с CAST (GETDATE () AS DATE) или CONVERT (DATE, GETDATE ()), он возвращает пустой фрейм данных, когда я удаляю AND, он работает нормально, но создает CSV, содержащий всю информацию для все даты в таблице.

моя ошибка:

Empty DataFrame
Columns: [ ScheduleDate,  Vendor, note, WOGFileFolder]
Index: []
Traceback (most recent call last):
  File "testing.py", line 85, in <module>
    WOG_folder = pickups_df.at[0, 'WOGFileFolder']
  File "File Path Redacted", line 2141, in __getitem__
    key = self._convert_key(key)
  File "File Path Redacted", line 2227, in _convert_key
    raise ValueError("At based indexing on an non-integer "
ValueError: At based indexing on an non-integer index can only have non-integer indexers

мой код:

stmt_vendor = """
SELECT DISTINCT
Vendor
FROM SOME_DB..SOME_TABLE;"""
cur.execute(stmt_vendor)
partners = cur.fetchall()

for partner in partners:
stmt_vendor_pickup_list = """
SELECT 
    ScheduleDate
    , Vendor
    , note
    , WOGFileFolder
FROM SOME_DB..SOME_TABLE
WHERE Vendor = ?
AND ScheduleDate = CAST(GETDATE() AS DATE
ORDER BY ScheduleDate;"""
pickups_df = pd.read_sql_query(stmt_vendor_pickup_list, conn, params= partner)
logger.infor(pickups_df)
WOG_folder = pickups_df.at[0, 'WOGFileFolder']

vendor_dir = 'FILE_PATH_REDACTED' + WOG_folder

if not os.path.exists(vendor_dir):
    os.mkdir(vendor_dir)
    logger.info("CREATED DIR FOR: " + WOG_folder)
else:
    logger.info("DIR FOR " + WOG_folder + " ALREADY EXISTS")

pickup_file_name = WOG_folder + '_testing.csv'

, а затем программа продолжает сборку CSV, используя эту информацию.

1 Ответ

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

Работает ли это, если поставить "?" в кавычки?

Обратите внимание, что если backend является postgres, вы должны использовать простые кавычки

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