1. 程式人生 > >python 引數命名的坑

python 引數命名的坑

在處理一批資料時,時間引數命名為如下紅體字這樣帶下劃線的格式,

def get_data( dt_start,dt_end): with execute_sql() as getData: s = f"select * into temp_new.dbo.online_臨時表 from (select distinct b.一級來源型別,isnull(a.總量,0)數量 from eccrc_rep.dbo.pg_cust_analysis_all b left join (SELECT 一級來源型別,COUNT(pg_cust_id)總量 FROM eccrc_rep.dbo.pg_cust_analysis_all WHERE 客戶狀態='0' AND 工商型別='標準企業工商' AND 建立年月>='{ dt_start
}' AND 建立年月<= '{dt_end }' GROUP BY 一級來源型別)a on b.一級來源型別=a.一級來源型別 where b.一級來源型別 in ('活動管理平臺','市場BD','銷售錄入','信譽','資源中心','總部CSC下發'))c;" print(s) getData.execute(s)   結果當指令碼跑到這個函式是,就會提示如下錯誤:

(venv) PS D:\Project\python\webfirst> python month.py
File "month.py", line 74
SyntaxError: Non-UTF-8 code starting with '\xe5' in file month.py on line 74, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details


(venv) PS D:\Project\python\webfirst>

這是為啥呢?怎麼解決呢?

這是個坑,python中的 執行的sql語句中 ‘建立年月>='{dt_start}' AND 建立年月<='{dt_end}' ’引數不能帶特殊符號,例如 '_' ,不能帶下劃線,命名引數時要注意。不然會出錯。

將dt_start,dt_end這兩個引數改為start,end後,指令碼執行成功。