5
我是AMPL用戶,嘗試使用Python(我的第一個Python代碼)編寫線性編程優化模型。我試圖找到如何聲明覆合集上的索引參數。例如,在AMPL,我會說: 集A 組B 組C PARAM X {A,B,C} PARAMÿ{A,B,C} PARAMŽ{A,B,C} 上述設置和參數可以通過AMPL輕鬆從數據庫中讀取。AMPL與Python - 導入表(多維字典?)
我從數據庫中讀取的表格有六個字段,即A,B,C,x,y,z。其中三個是主鍵(A,B,C),其餘的(x,y,z)是通過主鍵索引的值。
PYTHON PART: 我正在使用PYODBC模塊與SQL Server連接。我嘗試了「字典」,但它只能索引一個鍵。 我不知道應該使用哪種python特性來將前三個字段聲明爲複合集,將x,y和z聲明爲通過複合集索引的值。
import pyodbc
con = pyodbc.connect('Trusted_Connection=yes', driver = '{SQL Server Native Client 10.0}', server = 'Server', database='db')
cur = con.cursor()
cur.execute("execute dbo.SP @Param =%d" %Param)
result = cur.fetchall()
Comp_Key, x, y, z= dict((A, B, C, [x,y,z]) for A, B, C, x, y, z in result)
當然這是不正確的。我想不出一個辦法來做到這一點。
請幫我:) 在此先感謝!
感謝德布!非常感激!!我想知道的是,我應該在閱讀表格之前聲明這些集合和參數嗎?如果是,如何?或者我應該這樣做:'A,B,C,x,y,z = final_result'?我在這裏得到的是在我讀完它們之後如何分離集合和參數? –
你不能在python中聲明任何東西(它是動態類型的)。如果你的表的行像'[(A,B,C,x,y,z),(D,E,F,u,v,w)...]'那麼final_result的值爲{{ A,B,C):[x,y,z],(D,E,F):[u,v,w] ...}',那你到底想問什麼? –
讓我從一個例子開始。在我讀的數據表中,A =來源,B = Dest,C =產品,d =成本,e =體積,f =數量。我希望能夠在將數據作爲字典讀取之後獲得字段名稱,以便可以對集合(A,B,C)進行索引並檢索參數值(x,y,z)以進行計算。 –