簡體   English   中英

如何通過調用變量來組合類似的功能 python 腳本?

[英]How can I combine similar functionality python scripts by calling variable?

我有 2 個具有類似功能的短 python 腳本。 唯一的區別是 release_codes:transfer_date; 調用了一個。 另一種是在發布表語句中的release_id。

如何將腳本合二為一,並在需要時調用一個變量。 比如說,如果我選擇 release_id,那么腳本將只通過調用 release_id 來運行。 反之亦然,如果我選擇 release_codes:transfer_date

以下是簡短的腳本: (release_codes:transfer_date)

cur = con.cursor()

try:
    #release table statement
    cur.execute("select release_id,release_codes:transfer_date from food.fruit.apple where release_codes:transfer_date between '2020-11-01' and '2020-11-30'")
    release_rec=cur.fetchall()
    
    for row in release_rec:  
        
        query=f"select count (*) from food.veggie.celery and release_id={row[0]}"
        print("query:", query)
        cur.execute(query)
        one_row = cur.fetchone()
        print(one_row)

finally:
    cur.close()
cur.close()

灣。 (release_id)

cur = con.cursor()

try:
    #release table statement
    cur.execute("select release_id, release_codes:transfer_date from food.fruit.apple order by release_id")
    release_rec=cur.fetchall()
    
    for row in release_rec:  
        
        query=f"select count (*) from food.veggie.celery and release_id={row[0]}"
        print("query:", query)
        cur.execute(query)
        one_row = cur.fetchone()
        print(one_row)
           
finally:
    cur.close()
cur.close()

使用通用代碼創建一個方法,然后使用每個代碼的特定值調用

也不要使用字符串格式將值傳遞給查詢,使用占位符並讓 SQL 引擎處理它( ?s用於 mysql ),請參閱如何在 SQL 語句中使用變量?

def method(initial_query):
    cur = con.cursor()
    try:
        cur.execute(initial_query)
        release_rec = cur.fetchall()
        for row in release_rec:
            query = "select count (*) from food.veggie.celery and release_id=%s"
            cur.execute(query, (row[0],))
            ...

method("select release_id,release_codes:transfer_date from food.fruit.apple where release_codes:transfer_date between '2020-11-01' and '2020-11-30'")

method("select release_id, release_codes:transfer_date from food.fruit.apple order by release_id")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM