我在 MySQL 中有一個名為 set_payment7777 的表。它存盤了一些客戶的資訊。它存盤他們的姓氏、金額和變數。這個變數是一個列舉,它可以是 N 或 Y。我目前正在做的是獲取在 2 個日期之間完成的條目并將它們寫入檔案。代碼是:
query = "SELECT customer_surname, amount, variable FROM set_payment7777 WHERE date_ >= %s AND date_ <= %s"
mycursor.execute(query, (from_date, to_date))
for row in mycursor:
file.write("\t".join(map(str, row)))
file.write("\n")
現在是困難的部分,我想如果變數設定為 Y 我想讓它乘以這兩個日期之間的月數。
我已經實作了獲得月數:
num_months = (to_date.year - from_date.year) * 12 (to_date.month - from_date.month)
但我無法檢查變數是否設定為 Y 以將我在 for 回圈中獲得的行乘以 num_months。(如果變數設定為 NI 想要像以前一樣保留數量) 注意:可以有多個條目,有些可能將變數設定為 Y,有些設定為 N
uj5u.com熱心網友回復:
由于結果是一個串列容器,您可以使用數字索引來訪問串列元素。如果這太不透明和脆弱,您可以查看 DictCursor。現在,這樣的事情應該有效:
query = """SELECT customer_surname, amount, variable
FROM set_payment7777
WHERE date_ >= %s AND date_ <= %s"""
mycursor.execute(query, (from_date, to_date))
for row in mycursor:
if row[2].upper() == 'Y': # i choose to do .upper() or .lower() just in case
num_months = ((to_date.year - from_date.year) * 12
(to_date.month - from_date.month))
row[1] *= num_months
file.write("\t".join(map(str, row)))
file.write("\n")
此外,您可以考慮使用該csv模塊來撰寫制表符分隔的檔案。我認為,這通常是更可取的方式,除非您有該模塊無法處理的特定需求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/389949.html
上一篇:“int”物件在佇列中不可下標
