Как получить часть даты сегодня внутри функции в коде Python? - PullRequest
0 голосов
/ 15 апреля 2019

Мне нужно было запустить функцию в Python, которая проверяет день и месяц сегодня вместе с другим индикатором / флагом, чтобы определить, следует ли запускать код только для ежемесячных записей или запускать коды как для ежемесячных, так и для квартальных записей.

Я получил сообщение об ошибке: « глобальное имя« месяц »не определено ».

Я пытался использовать выражение " month (current_timestamp) " как часть кода PySpark sqlContext, и оно работало нормально.

Я также пытался изменить " current_timestamp " на " datetime.now () ", но получил то же самоеошибка.

def testing():
    conn = pymssql.connect(server='xx.xx.xx.xxx', user='user', password='password', database='database')
    stmt="select flag from dbo.score_flag"      
    lead_pd = pd.read_sql(stmt,conn)
    lead_flag=lead_pd.at[0,'flag']

    if lead_flag == 'Y' and month(current_timestamp) in (1,4,7,10) and day(current_timestamp) <= 25:
        logMessage("Run Quarterly and Monthly Codes")
        sendEmail('Quarterly and Monthly Records to Score')
        sys.exit(-1)

Я ожидаю, что этот код отправит мне электронное письмо, но вместо этого получит сообщение об ошибке.

1 Ответ

0 голосов
/ 16 апреля 2019

Мой коллега только что предложил простой подход - и он работал нормально:

def testing():
    conn = pymssql.connect(server='xx.xx.xx.xxx', user='user', password='password', database='database')
    stmt="select flag, month(current_timestamp) as month_today, day(current_timestamp) as day_today from dbo.score_flag"      
    lead_pd = pd.read_sql(stmt,conn)

    if lead_pd.at[0,'flag'] == 'Y' and lead_pd.at[0,'month_today'] in (1,4,7,10) and lead_pd.at[0,'day_today'] <= 25:
        logMessage("Run Quarterly and Monthly Codes")
        sendEmail('Quarterly and Monthly Records to Score')
        sys.exit(-1)
...