應用場景:運費規則優化,在原先的運費主表上新增乙個字段基數base_num,然後主表每條資料會有最多5條明細來記錄體積-係數資訊(明細表為此次新加)
業務方配置的每條運費規則的基數跟係數資訊(a到i的列的資料是系統已經有的,我讓運維從線下庫匯出來的):
現在用python將資料初始化為sql:
import csv,math
#業務方配置好的資料
file_to_read=
open
('c:\\users\\btr\\desktop\\ff.csv'
,'r'
,newline='')
reader=csv.
reader
(file_to_read)
#要儲存的資料
file_to_write=
open
('c:\\users\\btr\\desktop\\basenum.csv'
,'w'
,newline=
'',encoding=
'utf-8'
)writer=csv.
writer
(file_to_write)
file_to_write_coefficient=
open
('c:\\users\\btr\\desktop\\coefficient.csv'
,'w'
,newline=
'',encoding=
'utf-8'
)write_coefficient=csv.
writer
(file_to_write_coefficient)
write_coefficient.
writerow([
'insert into tms_coefficient_freight_config (freight_config_id,initial_volume,termination_volume,coefficient,active) values'])
for i in reader:
if(i[0]
=='id'):
continue
base_num=i[9]
unit_price=i[3]
if(i[9]
in(none,"")
):base_num=0if
(i[3]in
(none,"")
):unit_price=
0
writer.
writerow([
'update tms_freight_config set base_num='
+base_num+
',unit_price='
+unit_price+
' where id='
+i[0]+
' ;'])
for j in
range(10
,25,3
):if(i[j]
in(none,
"") or i[j+1]
=='0'):
continue
write_coefficient.
writerow([
'('+
str(i[0]
)+','+
str(i[j])+
','+
str(i[j+1]
)+','+
str(i[j+2]
)+',1'
+'),'])
file_to_read.
close()
file_to_write.
close()
print
("資料處理完成 "
)
結果:
MYSQL在工作中的應用
1 多表操作,必須開啟事務 2 陣列儲存db可以使用json序列化。主要是考慮json是比較通用的資料格式,如果使用分隔符拼接必須單獨約定乙個分隔符。choicestr fmt.sprintf v,choice strings.trimright choicestr,choicebyte,err j...
策略模式在工作中應用
物流系統要新增包裹資料,現在物流的上游有三種包裹 線上的包裹,線下的包裹,外部的包裹,每種包裹在新增時會有些不同的操作,比如線上線下的包裹新增後要發訊息給訂單履約中心方便監控,線上包裹新增時要判斷包裹是否需要抽檢,釘箱,並生成相關的資料等。每種包裹都有其特殊的操作,從系統維護的角度上說,可以使用策略...
策略模式在工作中的應用
最近在日常工作過程中接到乙個任務 需要提供乙個介面,根據不同的意圖返回給客服端不同的答案,每個意圖去識別答案的演算法都有各自不同的邏輯。作為乙個合格的crud程式設計師,接到這個需求腦袋裡的第一反應就是用if else去實現,但是這樣寫 太醜陋了,每個else裡面都會有大量的業務邏輯,對於後期接坑的...