python - 根据条件语句查询表并取值
问题描述
我正在查询一个表以获取两个值(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")
解决方案
您的主要代码应该看起来像这样调用函数:
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`
推荐阅读
- shell - 从 AWS EC-2 服务器调用 API 的 CURL 命令:日文数据在数据库中出现乱码
- android - Firebase RecyclerView Onclick 包含更多数据
- android - PreferenceFragment 类和 PreferenceActivity 类有什么区别,它们的作用是什么?
- ubuntu - 在 Ubuntu 18.04 上构建具有 OpenCL 支持的 TensorFlow 失败
- firebase - 将 Google Cloud Storage 访问权限限制为关注者(存储在 Firestore 中)
- button - Java中用于单选按钮、复选框等的正确和错误答案功能
- c++ - 在 C++ 中使用 qsort 时运行失败错误
- javascript - Incorporating if statement with JavaScript objects that has nested arrays with multiple values
- javascript - 如何访问 JavaScript 数组中的基础对象数组?
- apache-spark - 4 个主题的 Kafka 消费者代码