Jestem użytkownikiem AMPL próbującym napisać model optymalizacji programowania liniowego przy pomocy Pythona (Mój pierwszy kod Pythona). Próbuję znaleźć sposób deklarowania indeksowanych parametrów w zestawach złożonych. Na przykład, w Ampl, by powiedzieć: zbiór A Set B zbiór C param X {a, b, c} param R {A, B, C} param z {A, B, C} Powyższe zestawy i parametry można łatwo odczytać z bazy danych poprzez AMPL.AMPL vs. Python - Importowanie tabel (słowniki wielowymiarowe?)
Tabela, którą odczytałem z bazy danych zawiera sześć pól, tj. A, B, C, x, y, z. Trzy z nich to klucze podstawowe (A, B, C), a pozostałe (x, y, z) są wartościami indeksowanymi w stosunku do kluczy podstawowych.
PYTHON CZĘŚĆ: Używam modułu PYODBC do łączenia się z SQL Server. Próbowałem "dyktować", ale może indeksować tylko jeden klucz. Nie jestem pewien, która funkcja Pythona powinien być używana do deklarowania pierwszych trzech pól jako zestawu złożonego i x, y oraz z jako wartości indeksowanych w zestawie złożonym.
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)
Oczywiście, że nie jest prawidłowe. Nie mogę wymyślić, jak to zrobić.
Proszę, pomóżcie mi :) Z góry dziękujemy!
Dzięki Deb !! Bardzo doceniane !! Zastanawiam się, czy powinienem zadeklarować te zestawy i parametry, zanim przeczytam tabelę? Jeśli tak, w jaki sposób? Czy powinienem to zrobić: "A, B, C, x, y, z = final_result"? Dostaję tutaj pytanie: Jak mogę odseparować zestawy i parametry po ich przeczytaniu? –
Nie można zadeklarować niczego w pythonie (jest to wpisywane dynamicznie). A jeśli twój stół ma rząd taki jak '[(A, B, C, x, y, z), (D, E, F, u, v, w) ...]' to ostateczne_wybranie miałoby wartość '{(A, B, C): [x, y, z], (D, E, F): [u, v, w] ...} ", więc o co dokładnie chcesz zapytać? –
Zacznę od przykładu. W tabeli, z której czytam dane, A = Źródło, B = Dest, C = Produkt, d = koszt, e = objętość, f = ilość. Chcę móc mieć nazwy pól po przeczytaniu danych jako słownika, dzięki czemu mogę indeksować zbiory (A, B, C) i pobierać wartości parametrów (x, y, z) w celu wykonania obliczeń. –