查询表并基于条件语句获取值

时间:2019-09-24 17:36:53

标签: python mysql

我正在查询一个表以获取两个值(yesterday_cy_day,yesterday_cy_day2)。我还根据其下的另一个条件语句来获取“ yesterday_cy_day”。

我想做的是: 如果昨天的日期落在“ extrareaddays”列表中的任何值,则运行第一个if语句。如果日期不在列表中,请运行下面的第二个if语句。

我尝试过的方法: 我试图将第二段代码放在else语句中,但是它们都运行了。

第一个代码:

for extrareadday in extrareaddays:
if extrareadday in extrareadayday_date:
    for col, col2 in zip(extra_read_day1, extra_read_day2):
        yesterday_cy_day = col[8]
        yesterday_cy_day2 = col2[8]
        print("Saturday was an extra read day. We are going to use cycle 
days:", yesterday_cy_day, yesterday_cy_day2)

第二个代码:

for col, col2 in zip(yesterday, friday):
    yesterday_cy_day = col[8]
    friday_cy_day = col2[8]
    if today_day == 'Monday' and today_day in col[18]:
        yesterday_cy_day = friday_cy_day
        print("Today is Monday so we will use Friday's cycle day")
    else:
        yesterday_cy_day = col[8]
        print("Today is not a monday so we will use yesterdays cycle day")

完整代码:

extrareaddays = ['2019-09-21', '2019-09-30', '2019-11-02', '2019-11-30', '2019-12-21']
# Format extra read day date as YYYY_MM-DD
extrareadayday_date = date.today() - timedelta(days=3)
extrareadayday_date = extrareadayday_date.strftime("%Y-%m-%d")


yesterday_date = date.today() - timedelta(days=1)
yesterday_date = yesterday_date.strftime("%Y-%m-%d")
print(yesterday_date)

friday_date = date.today() - timedelta(days=4)
friday_date = friday_date.strftime("%Y-%m-%d")


today_day = date.today()
today_day = today_day.strftime('%A')


yesterday_gregorian_q = """SELECT * FROM table
WHERE to_char(GREGORIAN_DATE, 'YYYY-MM-DD') = '{}'""".format(yesterday_date)
mdwcursor.execute(yesterday_gregorian_q)

friday_gregorian_q = """SELECT * FROM table
WHERE to_char(GREGORIAN_DATE, 'YYYY-MM-DD') = '{}'""".format(friday_date)
mdwcursor2.execute(friday_gregorian_q)

yesterday_cy_date = date.today() - timedelta(days=18)
yesterday_cy_date2 = date.today() - timedelta(days=17)
extra_read_day_gregorian_q = """SELECT * FROM table
WHERE to_char(GREGORIAN_DATE, 'YYYY-MM-DD') = '{}'""".format(yesterday_cy_date)
extra_read_day_gregorian_q2 = """SELECT * FROM table
                WHERE to_char(GREGORIAN_DATE, 'YYYY-MM-DD') = '{}'""".format(yesterday_cy_date2)


yesterday = mdwcursor.fetchall()
friday = mdwcursor2.fetchall()
extra_read_day1 = mdwcursor3.execute(extra_read_day_gregorian_q)
extra_read_day2 = mdwcursor4.execute(extra_read_day_gregorian_q2)

for extrareadday in extrareaddays:
    if extrareadday in extrareadayday_date:
        for col, col2 in zip(extra_read_day1, extra_read_day2):
            yesterday_cy_day = col[8]
            yesterday_cy_day2 = col2[8]
            print("Saturday was an extra read day. We are going to use cycle days:", yesterday_cy_day, yesterday_cy_day2)

for col, col2 in zip(yesterday, friday):
    yesterday_cy_day = col[8]
    friday_cy_day = col2[8]
    if today_day == 'Monday' and today_day in col[18]:
        yesterday_cy_day = friday_cy_day
        print("Today is Monday so we will use Friday's cycle day")
    else:
        yesterday_cy_day = col[8]
        print("Today is not a monday so we will use yesterdays cycle day")

1 个答案:

答案 0 :(得分:0)

您的主代码应类似于以下对函数的调用:

for each_date in extrareaddays:
    if each_date in extrareadayday_date:
        first_thing(each_date)
    else:
        second_thing(each_date)

现在,您还需要在其上定义函数,所以:

def first_thing(each_date):
    # the code you want to do for the first thing would be here
    # access the date for this loop using `each_date`

def second_thing(each_date):
    # the code you want to do for the second thing would be here
    # access the date for this loop using `each_date`